Struts2与Struts1对比及开发环境搭建
需积分: 9 72 浏览量
更新于2024-08-18
收藏 4.09MB PPT 举报
"Struts2中的视图转发配置与Struts1的区别以及Struts2的优势和开发环境搭建"
Struts1和Struts2都是流行的Java Web MVC框架,但它们在设计和实现上有显著区别。Struts1是最早的版本,而Struts2是在WebWork2的基础上发展起来的,它吸取了前者的经验并引入了许多改进和新特性。
在Struts1中,视图转发是通过`<forward>`标签来实现的。例如,`<forward name="add" path="/index.jsp">`表示当动作(action)执行成功后,控制权会转发到`/index.jsp`页面。如果设置`redirect="true"`,则会触发浏览器级别的重定向,而不是内部请求转发。
而在Struts2中,视图转发和重定向的配置更为灵活。虽然不再直接使用`<forward>`标签,但可以通过配置Action的结果类型来实现相同的功能。例如,在Struts2的配置文件(struts.xml)中,可以定义一个名为`add`的结果,指向`index.jsp`,如下所示:
```xml
<action name="manage">
<result type="dispatcher">/index.jsp</result>
<!-- 或者使用重定向 -->
<result type="redirect">/index.jsp</result>
</action>
```
Struts2的优点包括:
1. **无侵入式设计**:它不强制开发者依赖特定的API,使得应用程序可以独立于Struts2框架之外。
2. **拦截器**:提供了强大的AOP(面向切面编程)支持,可以用于权限验证、日志记录等多种场景。
3. **类型转换器**:自动将请求参数转换为需要的数据类型,减少了手动转换的工作。
4. **多视图支持**:支持JSP、FreeMarker、Velocity等多种模板技术作为视图层。
5. **输入验证**:可以针对特定的方法进行数据校验,提高了代码的可维护性。
6. **国际化**:提供了灵活的国际化资源文件管理,支持全局、包级和Action级别的资源配置。
至于Struts2的开发环境搭建,通常包括以下步骤:
1. 创建一个新的Web项目。
2. 添加必要的Struts2库文件到项目的`WEB-INF/lib`目录,这些库通常包括Struts2的核心库和其他依赖的JAR文件。
3. 编写Struts2的配置文件,如`struts.xml`,这是整个应用的入口点,定义了Action及其结果。
4. 在`web.xml`中配置Struts2的前端控制器`FilterDispatcher`(或更新后的`StrutsPrepareAndExecuteFilter`),以便启动Struts2框架。
最后,Struts2的Action类通常继承自`ActionSupport`或自定义的基类,如示例中的`OrderListAction`,并重写`execute()`方法来处理业务逻辑。Struts2通过注解或XML配置来关联Action方法和HTTP请求,使得代码更加模块化和可维护。Struts2提供了一套更强大、更现代的解决方案来构建Java Web应用,尤其是在处理用户交互和业务逻辑方面。
2019-04-17 上传
2015-12-21 上传
2011-11-25 上传
2010-09-16 上传
2008-11-01 上传
2009-11-16 上传
2010-06-11 上传
2017-03-07 上传
2010-06-28 上传
西住流军神
- 粉丝: 30
- 资源: 2万+
最新资源
- Haskell编写的C-Minus编译器针对TM架构实现
- 水电模拟工具HydroElectric开发使用Matlab
- Vue与antd结合的后台管理系统分模块打包技术解析
- 微信小游戏开发新框架:SFramework_LayaAir
- AFO算法与GA/PSO在多式联运路径优化中的应用研究
- MapleLeaflet:Ruby中构建Leaflet.js地图的简易工具
- FontForge安装包下载指南
- 个人博客系统开发:设计、安全与管理功能解析
- SmartWiki-AmazeUI风格:自定义Markdown Wiki系统
- USB虚拟串口驱动助力刻字机高效运行
- 加拿大早期种子投资通用条款清单详解
- SSM与Layui结合的汽车租赁系统
- 探索混沌与精英引导结合的鲸鱼优化算法
- Scala教程详解:代码实例与实践操作指南
- Rails 4.0+ 资产管道集成 Handlebars.js 实例解析
- Python实现Spark计算矩阵向量的余弦相似度