1.Struts 2实现MVC的方式
2.Struts 2 的使用
1.首先导入Struts 2 的核心jar包,配置web.xml文件
<filter>
<filter-name>Struts2</fileter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.配置struts.xml
<struts>
<!--
package:包,用于对Action进行封装
name:包名,根元素下可以有多个包,彼此不能重名
extends:继承,用于指定继承的包,相当于将继承包下的配置信息复制到当前包
namespace:命名空间,用于规定Action的访问路径,必须“/”开头 -->
<package name="test01" namespace="/test01" extends="struts-default">
<!--action:业务控制器,用于注册业务控制器组件
name:action名称,用于规定Action的访问路径
class:业务控制器组件,用于指定业务控制器对应的类
method:方法,用于指定访问当前action时要调用的方法
*请求URL:http://ip:port/projectName/namespace/ActionName.action
-->
<action name="hello" class="test01.konrad.action.HelloAction" method="execute">
<!--result:输出组件,用于转发、重定向、直接输出
name:名称,一个action下可以有多个result,彼此不能重名
默认值转发,元素内设置转发的页面
-->
<result name="success">
/hello.jsp
</result>
</action>
</package>
</struts>
3.Result类型
1.dispatcher(默认方法):用于转发的result,可以将请求转发给JSP,这种类型的Result对应的类为ServletDispacherResult,通过default="true"指定该Result为Struts2默认的Result类型。
<result name="success" type="dispatcher">
<param name="inputName">/index.jsp</param>
</result>
2.redirectAction:用于将请求重定向给另外一个Action,对应类为ServletActionRedirectResult
<result name="login" type="redirectAction">
<!--若重定向的Action与当前Action在同一个namespace下,可以省略namespace-->
<param name="namespace">
/命名空间
</param>
<param name="actionName">
action名
</param>
</result>
3.redirect:用于将请求重定向给另一个页面,可以方式用户重复提交数据
<result name="login" type="redirect">
<param name="new">/newPage.jsp</param>
</result>
4.获取Session的方式
获取Session的方式
1.ActionContext
- ActionContext.getContext().getSesion(),返回Map<String, Object>
2.ServletActionContext
- ServletActionContext.getRequest().getSession(),返回HttpSession
3.SessionAware(推荐使用)
- 让Action实现SessionAware接口
- 实现setSession(Map<String, Object> session)方法,Struts2会在实例化Action后调用方法,通过方法参数将Session对象注入进来
- 定义成员变量,接收注入进来的Session对象