Struts2与Struts1对比分析:进化与改进

需积分: 21 0 下载量 147 浏览量 更新于2024-08-18 收藏 493KB PPT 举报
"本文介绍了Java程序员必读的URL标签在Struts2框架中的使用,以及Struts技术的发展历程,包括Struts1的局限性和Struts2的出现。Struts2是基于WebWork的,提供了更灵活的架构和更强的功能。文章还概述了Struts2的处理流程和与Struts1的对比,强调了Struts2在Action设计、拦截器和视图输出方面的改进。" 在Java Web开发中,Struts框架是一个广泛使用的MVC(模型-视图-控制器)框架,它极大地简化了Web应用的开发。Struts2是Struts1的升级版,融合了WebWork框架的优点,提高了灵活性和可扩展性。在描述中提到的URL标签是Struts2中的一个重要元素,用于构建动态的URL。 `s:url`标签允许开发者创建链接到Action的URL,同时可以传递参数。在例子中,`<s:url action="helloworld_add" namespace="/test"><s:param name="personid" value="23"/></s:url>`会生成一个链接到"/test/helloworld_add.action"的URL,并附加参数`personid=23`。这里的`namespace`属性定义了Action的命名空间,而`action`属性指定了Action的名称。`<s:param>`标签则用于添加请求参数。 关于`%`符号,描述中指出在OGNL(Object-Graph Navigation Language)表达式中,它可以用来计算表达式的值。例如,`<s:url value="%{#myurl}" />`,这里的`%{}`是OGNL表达式,它会取`#myurl`变量的值,然后用这个值作为URL。 Struts1虽然在当时非常流行,但它存在一些问题,如与JSP/Servlet的高度耦合,导致测试困难,以及对Struts1 API的过度依赖。这些问题在Struts2中得到了解决。Struts2引入了拦截器(Interceptor)的概念,允许在Action执行前后添加自定义逻辑,如验证、日志记录等,极大地增强了框架的功能。此外,Action的执行不再局限于单一的`execute`方法,可以有多个结果,支持多种视图技术,如JSP、FreeMarker、Velocity等。 Struts2的处理流程包括:浏览器发送请求,FilterDispatcher作为核心控制器负责调度,接着拦截器链执行,对请求进行预处理,然后调用相应的Action执行业务逻辑,Action执行后返回的结果会被渲染成视图并发送回浏览器。 Struts2在Struts1的基础上进行了重大改进,提供了更强大的功能和更灵活的设计模式,使得Java Web开发更加高效和便捷。对于Java程序员来说,理解和掌握Struts2的URL标签、拦截器和Action机制是提高开发效率的关键。