struts2 convention插件的相关文章在网络上还很少,今天研究了一下
官方文档 http://cwiki.apache.org/WW/convention-plugin.html
附件内源码环境(下载请到页尾)
Dynamic Web Project
eclipse3.3
jdk1.6
tomcat6
必要jar列表
commons-fileupload-1.2.1.jar
commons-logging-1.0.4.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-convention-plugin-2.1.6.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
-
- com.sunflower.actions.NavigatorAction
- com.sunflower.actions.child.ChildAction
- error.jsp
- index.jsp
- next.jsp
- child/next.jsp
- 主题:确认action内默认执行方法是execute还是index
请求url:navigator.action
类型:dispatcher
方法:execute或index
执行默认方法 - 主题:测试如何跳转到站外
请求url:navigator!redirect.action
类型:redirect(旧版本使用ServletRedirectResult.class)
方法:redirect
跳转到站外 - 主题:测试redirectAction、basePackage内子包action的映射、以及参数传递
请求url:navigator!redirectAction.action
类型:redirectAction (旧版本使用ServeltActionRedirectResult.class)
方法:redirectAction
location:child/child(basePackage=com.sunflower.actions,this package=com.sunflower.actions.child)
注意
1:ChildAction内的execute方法返回指向location="next.jsp",查看结果页面next.jsp是根目录资源还是/child/next.jsp资源
2: redirectAction方法向请求作用域设置了msg信息,查看是否显示了msg
跳转到站内action - 主题:错误跳转
请求url:navigator!error.action
生成错误 - 主题:@Action的使用已经Result的location绝对与相对的区别
使用注解@Action(value="/test/childTest")
请求url:/test/childTest.action
注意:类仍然是NavigatorAction
next.jsp为绝对路径 - 主题:@Actions的使用
注解@Actions({ @Action(value="/test/action1"), @Action(value="/test/action2") })
请求
url:/test/action1.action
url:/test/action2.action
注意:类仍然是NavigatorAction
action1 action2
Web.xml关键部分
- <!-- ============================ 使用struts2处理页面请求 ============================ -->
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>struts2</filter-name>
- <url-pattern>*.action</url-pattern>
- </filter-mapping>
struts2.xml配置如下
- <?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.devMode" value="true" />
- <!-- 国际化资源重新加载 -->
- <constant name="struts.i18n.reload" value="true" />
- <!-- 配置文件重新加载 -->
- <constant name="struts.configuration.xml.reload" value="true" />
- <!-- convention类从新加载 -->
- <constant name="struts.convention.classes.reload" value="true" />
- <!--++++++++++++++++++++++++++++++++++++++++++++++++开发模式结束 -->
- <!-- 主题 -->
- <constant name="struts.ui.theme" value="simple" />
- <!-- 地区 -->
- <constant name="struts.locale" value="zh_CN" />
- <!-- 国际化编码 -->
- <constant name="struts.i18n.encoding" value="UTF-8" />
- <!-- 扩展-->
- <constant name="struts.action.extension" value="action,do,jsp" />
- <!-- 启用动态方法调用 -->