?
一、struts2简介
1、什么是struts2?
? struts2是目前java主流的MVC框架
? MVC思想:能够将web应用中将各组件按功能进行分类,不同组件使用不同技术充当。
? ? ?推荐将系统分为Model(模型层)、View(视图层)和Controller(控制层),
? ? ?各层之间松耦合,提供良好的封装。
2、struts2版本
目前struts2的最高版本为2.3.1
但是同spring结合的最好的版本为2.2.3,经使用2.2.3也比较稳定
所以建议使用struts2.2.3版本。
3、struts2的基本配置
a)web.xml文件中增加
<!-- 配置struts2 -->
? ?<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
<init-param>
? ? <param-name>config</param-name>
? ? <param-value>
? ? struts-default.xml,struts-plugin.xml,struts/struts.xml
? </param-value>
</init-param>
</filter>?
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
此处可以通过config参数自由的指定struts配置文件的位置,
注意:此处如果想要增加config参数,那么value中至少要有struts-default.xml和struts-plugin.xml
其中struts-default.xml是struts2核心包中的重要配置文件,里面配置大量的struts2需要的组件
? ?struts-plugin.xml是struts2插件包中的配置文件名,struts2插件包中都会存在这个文件。
? ?只有struts.xml是可供我们修改的配置文件,在struts.xml可以配置任何能在struts2核心包
org.apache.struts2包下default.properties文件中存在的参数的值
b)项目中引用如下包:
commons-fileupload-1.2.2.jar,
commons-logging-api-1.1.jar,
freemarker-2.3.16.jar,
ognl-3.0.1.jar,
struts2-core-2.2.3.jar,
xwork-core-2.2.3.jar,
commons-lang-2.5.jar,
commons-io-2.0.1.jar,
javassist-3.11.0.GA.jar。
c)增加struts.xml文件,对struts进行设置
4、org.apache.struts2.dispatcher.FilterDispatcher的作用
(1)执行Actions
? ? ? ? ? ? 过滤器通过ActionMapper对象,来判断是否应该被映射到Action.如果mapper对象指示他应该被映射,过滤链将会被终止,
? ? ? ? ? ? 然后Action被调用。这一点非常重要,如果同时使用SiteMesh filter,则SiteMesh filter应该放到该过滤器前,否则
? ? ? ? ? ? Action的输出将不会被装饰。
? ? ? ? ?(2)清除ActionContext
? ? ? ? ? ? 过滤器为了防止内存溢出,会自动的清除ActionContext。这会导致同strut2结合较深的一些过滤器出现问题。
? ? ? ? ? ? 为防止其他过滤器使用ActionContext中的值,而被FilterDispatcher自动清除的情况出现。
? ? ? ? ? ? 通常在web.xml中加入
? ? ? ? ? ? <!-- 延长action中属性的生命周期, -->
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
?
?此过滤器应该配置在org.apache.struts2.dispatcher.FilterDispatcher之前,
?此过滤器的作用为当请求通过过滤器时,过滤器将request中的一个名为“__cleanup_recursion_counter”的环境变量加1,
?当请求结束时将此环境变量减1
?而FilterDispatcher中的清除机制,是有判断的,它会判断此时的,此环境变量是否为0,如果为0才清除。
?
? ? ? 5、BaseAction 公共的父类,继承ActionSupport?
实现 ServletContextAware,ServletResponseAware,?
ServletRequestAware, SessionAware ? ?
?
? ? ? ? ? ?声明变量
? ? ? ? ? ? protected ServletContext servletcontext;
protected HttpServletResponse httpservletresponse;
protected HttpServletRequest httpservletrequest;
protected HttpSession httpSession;
protected Map<String, Object> session;
?6、简单的登陆实现、表单验证
?
?7、登陆过滤器
?
?8、前台标签,<s:iterator>、<s:if>、<s:property>
? <s:form>、<s:actionerror>、<s:fielderror>、
? <s:text>、<s:textfield> 、<s:password>、<s:submit>
?