1. strutrs2功能
1) 数据合法性验证
2) 统一布局
3) 可扩展性
4) 国际化和本地化
5) 支持Ajax
6) 表单的重复提交
7) 文件的上传下载
2. 和struts1的异同
1) struts1 里使用ActionServlet 作为控制器; struts2 使用了一个过滤器作为控制器
2) struts1 中每个 HTML 表单都对应一个ActionForm 实例. struts2 中, HTML 表单将被直接映射到一个 POJO
3) struts1 的验证逻辑编写在ActionForm 中; Struts2 中的验证逻辑编写在 Action 中.
4) struts1 中, Action 类必须继承org.apache.struts.action.Action 类; struts2 中任何一个 POJO 都可以是一个 Action 类.
5) struts2 在页面里使用 OGNL 来显示各种对象模型, 可以不再使用 EL 和 JSTL
3. 环境搭建
a) 加入 jar 包: 复制 struts\apps\struts2-blank\WEB-INF\lib 下的所有 jar 包到当前 web 应用的 lib 目录下.
b) 在 web.xml文件中配置 struts2: 复制 struts\apps\struts2-blank1\WEB-INF\web.xml 文件中的过滤器的配置到当前 web 应用的 web.xml 文件中,即添加一个类名为org.apache.struts2.dispatcher.ng.filter.strutsPrepareAndExecuteFilter的拦截所有资源的拦截器
<filter> <filter-name>struts2</filter-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>
c) 在当前 web 应用的 classpath 下添加 struts2的配置文件 struts.xml: 复制 struts1\apps\struts2-blank\WEB-INF\classes 下的 struts.xml 文件到当前 web 应用的 src 目录下.详细见第4步
d) 添加dtd约束: 将http://struts.apache.org/dtds/struts-2.3.dtd关联到struts-2.3.15.3\src\core\src\main\resources:windows-> preferences->xml->xml catalog ->add填写key type和key
4. struts.xml文件配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 1.name:标识,供其他package引用 2.extends:继承包,struts-default中包含许多常规配置 3.namespace:默认是/,如果加上,则action路径的前面需要加上namespace才能访问 --> <package name="helloworld" extends="struts-default" namespace="/version"> <!-- 1.name:必须有,和jsp页面中的action一一对应 2.class:默认com.opensymphony.xwork2.ActionSupport,可指定为自己定义的Action 3.method:默认execute,可指定为自己在Action类中定义的方法 --> <action name="person-input" > <!-- 1.name:默认success,和<action/>标签指定的class中的method方法中的返回值对应 2.type:默认dispatcher,此外常用的还有redirect 3.<result/>中的值对应WEB-INF中的文件 --> <result>/WEB-INF/pages/input.jsp</result> </action> <action name="person-save" class="com.version.s.helloworld.Person" method="save"> <result name="detail" type="dispatcher">/WEB-INF/pages/detail.jsp</result> </action> </package> </struts>