一、介绍
Struts2是在WebWork的基础上发展起来的,并且吸收了Struts1和WebWork的优点。
Struts2和Struts1的区别:
(1)Struts1的Action是单例模式并且必须是线程安全的;而Struts2的Action为每一个请求产生一个实例。
(2)Struts1的Action依赖于Servlet,当一个Action被调用时,HttpServletRequest和HttpServletResponse被传递为execute方法;而Struts2不依赖于容器,允许Action脱离容器被单独测试,如果有需要,也可以访问HttpServletRequest和HttpServletResponse。
(3)Struts1使用ActionForm对象捕捉表单数据,而且所有的ActionForm必须继承一个基类;Struts2直接使用Action属性作为输入属性,不需要继承任何基类。
(4)Struts1使用JSTL EL;Struts2也可以使用JSTL,但是还支持一个更强大和灵活的表达式语言OGNL。
(5)Struts1使用ActionForm的validate方法进行校验;Struts2也可以使用validate方法,也可以使用配置文件进行校验。
二、下载地址
http://struts.apache.org
三、环境搭建
(1)新建名称Struts2的用户库,导入Struts2框架lib中的部分JAR文件:
(2)为工程增加Struts Capabilities,右键你的工程名称,选择MyEclipse->Add Struts Capabilities,在弹出的对话框中,选择对应的Struts的版本,以及对应的(1)中的用户库。
四、入门示例
(1)编写一个jsp,引入Struts2标签库:<%@taglib prefix="s" uri="/struts-tags" %>
(2)编写一个控制器java文件,继承ActionSupport类【Struts2也可以不继承任何基类】,重写execute方法。
(3)编写struts.xml文件:
(4)编写struts.properties文件:struts.i18n.encoding=GBK
(5)编写web.xml文件:
五、Struts2的核心机制
(1)过滤器:
<filter>
<filter-name>XXX</filter-name>
<filter-class>XXX</filter-class>
</filter>
<filter-mapping>
<filter-name>XXX</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(2)输入校验:校验文件存放的路径和要校验的Action类要一致,校验文件命名为Action类名-validation.xml:
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>用户名不能为空!</message>
</field-validator>
</field>
(3)拦截器:Struts2提供了许多的拦截器<interceptor-ref>,将struts-default.xml包含到struts.xml中即可(如下图配置logger拦截器):
(4)国际化:在struts.properties中定义使用的国际化文件:struts.custom.i18n.resources=globalMessages;
(5)标签库:在jsp代码顶部加入代码,<%@taglib perfix="s" uri="/struts-tags"%>
(6)配置文件:struts.properties和struts.xml。