精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-08
最后修改:2010-12-08
首先建立一个web项目,我这里就叫做convention,接着拷贝struts的jar包到相应的lib目录下,如图所示 接下来要配置struts的配置文件,配置如下 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.ui.theme" value="simple" /> <!-- 定义默认的访问后缀 --> <constant name="struts.action.extension" value="do" /> <!-- 开启动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- 默认对以action,web的包极其子包起作用 --> <constant name="struts.convention.package.locators" value="action, web" /> <!-- 设定默认的字符编码 --> <constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 可以自定义页面的存放路径 --> <!-- <constant name="struts.convention.result.path" value="/WEB-INF/page" /> --> <!-- 以下两项在生产模式中要去掉 --> <constant name="struts.devMode" value="true"/> <constant name="struts.convention.classes.reload" value="true" /> </struts> 这里要注意的是,如果想用convention插件进行开发,则必须要开启动态方法调用。 下面我建立一个类,完整类名称为 com.bj58.action.user.UserListAction 那么,这个UserListAction默认的包命名空间就是"/user" 下面让我们来看一下UserListAction类的代码 @Namespace("/user") @SuppressWarnings("serial") public class UserListAction extends ActionSupport { public String execute() { return "success"; } } @Namespace定义了这个类的包命名空间,相对应的,默认使用convention插件的时候,页面结果都是存放在/WEB-INF/content下的,如果你这个action类的包命名空间是/user, 那么你要在content文件夹下新建立个user文件夹,如图 那么,对应这个action的页面都放在里面就可以了 默认Action如果是两个单词以上的,对应的action名称就要以"-"为中划线分割开, 那么这个Action对应的页面就是user-list.jsp 好了这个时候,我们启动tomcat,在浏览器里输入 http://localhost:8080/user/user-list.do就可以访问到userList页面了,这个我的根路径定义为"/" 如果你默认是convention,那么你的路径要加入项目名称。 接下来,再建立一个类,我叫它UserManageAction,用来做User管理的,类的代码如下: @Results({ @Result(name="message", location="/WEB-INF/content/common/message.jsp") }) @Namespace("/user") @SuppressWarnings("serial") public class UserManageAction extends ActionSupport { @Action(value = "/user/bar", results = { @Result(name = "add", location = "/another/url.do", type = "redirect") }) public String addUI() { return "add"; } public String add() { return "message"; } public String editUI() { return "edit"; } public String edit() { return "message"; } @Action(value="/another/url") public String another() { return "another"; } } 这个类里我定义了增加和修改的方法,需要注意的是,你的相对应的jsp页面的名称就不一样了,比如,addUI方法,是打开一个添加用户的页面,它默认走的是"add",那么,你的页面就要起名字为user-manage-add.jsp,你在浏览器里访问的时候,就要这么访问了 http://localhost:8080/user/user-manage!addUI.do 那么就将打开你的添加页面了。 这里的 @Results({ @Result(name="message", location="/WEB-INF/content/common/message.jsp") }) 定义了全局要访问的页面,比如你添加或者修改成功后,要跳转到一个公共的页面。 最后再说下@Action注解,这个注解,是定义一个url路径,比如对于添加方法,如果我直接访问http://localhost:8080/user/bar.do 那么将直接跳转到another方法对应的页面去,就是content下面的another文件夹下的url.jsp页面了。 这就是初步的使用convention打造基于零配置的小示例。时间仓促,还有很多不完善的地方,欢迎大家批评指正,呵呵。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-09
相对而言,Spring3 MVC的配置更少,而且关键一点:更灵活。。。
|
|
返回顶楼 | |
发表时间:2010-12-10
fnet 写道 相对而言,Spring3 MVC的配置更少,而且关键一点:更灵活。。。
举例说明? |
|
返回顶楼 | |
发表时间:2010-12-10
这支持freemarker 么
|
|
返回顶楼 | |
发表时间:2010-12-10
感觉好麻烦的啊,还不如直接写配置文件呢。
|
|
返回顶楼 | |
发表时间:2010-12-10
[quote="glamey"]感觉好麻烦的啊,还不如直接写配置文件呢。[/quote]
|
|
返回顶楼 | |
发表时间:2010-12-10
在jboss下跑,就是痛苦的开始!零配置非零配置!
|
|
返回顶楼 | |
发表时间:2010-12-11
个人感觉,无论是spring 还是 struts2的annotation配置可读性没那么好,还是使用xml 清晰明了,一看就知道 相对简单
|
|
返回顶楼 | |
发表时间:2010-12-12
使用Convention插件,有一个问题,就是Action如果是在单独的JAVA工程中,然后发布的时候,使用JAR包形式,Convention不能解析类路径中的零配置Action。这一点很让人不爽,最后决定放弃这个插件。
|
|
返回顶楼 | |
发表时间:2010-12-14
在没有良好的规范下 零配置只会导致项目更混乱!
|
|
返回顶楼 | |