struts2是通过filter来初始化配置的,struts1 是通过servlet 加载配置的
action名称的搜索路径,按包的顺序从里往外搜
1>如果没有为action指定class,默认是ActionSupport。
2>如果没有为action指定method , 默认执行action中的execute()方法 。
3>如果没有为result指定name属性 , 默认为success 。
视图类型
1. 重定向的类型:dispatch(默认值),redirect(客户端跳转),redirectAction,plainText
2 . 在action中的参数可以在result中间配置
- <action name="list" class="cn.itcast.action.HelloWorldAction" method="execute">
- <result name="success" type="redirect">/employeeAdd.jsp?username=${username}</result>
- </action>
与struts 1 相比,灵活性强,struts1 是在action中把参数设置在request中 ,然后在jsp页面上从request中获得
3 . redirectAction:从一个action跳转到另一个action
访问不在同一包中的action
- <action name="redirectAction">
- <result type="redirectAction">
- <param name="actionName">xxx</param>
- <param name="namespace">/control/department/xdsfdsfds/435435</param>
- </result>
- </action>
- <action name="plainText">
- <result type="plainText">
- <param name="location">/index.jsp</param>
- <param name="charSet">UTF-8</param><!-- 指定读取文件的编码 -->
- </result>
- </action>
5 . 定义全局视图
我们知道在包中可以定义<global-results> ,但只有包中的action共享这个视图,其他包无法访问
如何定义全局视图?
定义一个包
- <package name="base" extends="struts-default">
- <global-results>
- <result name="message">/WEB-INF/page/message.jsp</result>
- </global-results>
- </package>
<package name="itcast" namespace="/control/employee" extends="base">
</package>
这样就所有的包都能共享这个视图
6 . 在action中传递中文要转码,在jsp中要解码(只针对客户端的get方式跳转)
action中转码:
- this.username = URLEncoder.encode("传智播客", "UTF-8");
- <%= URLDecoder.decode(new String(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %>
7 . 在result中如何传递多个参数
- <result name="success" type="redirect">/employeeAdd.jsp?username=${username}&id=${id}</result>