目标:希望不需要获取请求参数,请求参数直接有了;希望不需要进行请求转发,直接返回字符串来定位到相应的JSP页面;简单地实现国际化、文件的上传与下载等……
一、Struts2.0是什么?
Struts2是一个用来开发MVC应用程序的框架,其提供了*Web应用程序开发过程中的一些常见问题的解决方案*,如:
- 统一的布局
- 可扩展性
- 国际化与本地化
- 支持Ajax
- 表单的重复提交
- 文件的上传与下载
- 对来自用户的输入数据进行合法性验证(通过配置或注解的方式即可验证)等
下载地址:http://struts.apache.org/
二、Struts2 VS Struts1?
高效(大量代码的Servlet–>简单的Filter)、易于扩展、测试简单……
1. 在体系结构方面更优秀
- 类更少, 更高效: 在Struts2中无需使用 “ActionForm”来封装请求参数;
- 扩展更容易: Struts2通过拦截器完成了框架的大部分工作,在 Struts2 中插入一个拦截器对象相当简便易行.
2. 应用程序测试更容易
- 即使不使用浏览器也可以对基于Struts2的应用程序进行测试
三、如何从Struts1升级到Struts2?
Struts2本质上讲不是从Struts1扩展而来,其实质上是一个换了品牌标签的WebWork……
- Struts1使用ActionServlet作为控制器,而Struts2 使用一个过滤器作为控制器;
- Struts1中每个HTML表单都对应一个ActionForm实例,而Struts2中所有HTML表单将被直接映射到一个POJO(普通Java类);
- Struts1的验证逻辑编写在ActionForm中,而Struts2的验证逻辑编写在Action中;
- Struts1中Action类必须继承org.apache.struts.action.Action类,而Struts2中任何一个POJO都可以是一个Action类;
- Struts2在页面里使用OGNL来显示各种对象模型,可以不使用EL和JSTL表达式。
四、Struts2.0框架环境搭建?
1. 加入所依赖的jar包
- 复制struts\apps\struts2-blank\WEB-INF\lib下的所有jar包到当前web应用的lib目录下
2. 在web.xml文件中配置Struts2
- 复制struts\apps\struts2-blank\WEB-INF\web.xml文件中的过滤器的配置到当前web应用的web.xml文件中
3. 在当前web应用的classpath下添加struts2的配置文件struts.xml
- 复制 struts\apps\struts2-blank\WEB-INF\classes下的 struts.xml文件到当前web应用的src目录下
4. 添加DTD约束(显示提示)
- 复制struts.xml配置文件中的http://struts.apache.org/dtds/struts-2.3.dtd
- Preferences–>XML–>XML Catalog–>Add–>……
- Key type: URI
- Key: http://struts.apache.org/dtds/struts-2.3.dtd
- Location: struts-2.3.31\src\core\src\main\resources\struts-2.3.dtd