### Struts2入门知识 #### 一、Struts2是什么 **1. Struts2概述:** Struts2是一款开源的MVC(Model-View-Controller)架构模式下的Web应用框架,它主要用于Java Web开发中处理HTTP请求。Struts2框架的主要目标是在Web层替代传统的Servlet/JSP技术。通过使用Struts2,开发者可以更容易地管理和组织应用程序的业务逻辑、视图和控制器部分,从而提高开发效率并降低维护成本。 **2. Struts2的优势:** - **自动封装参数:** Struts2可以通过OGNL表达式自动绑定请求参数到Java对象,简化了参数处理的过程。 - **参数的校验:** 框架提供了丰富的校验机制,可以在请求处理之前对参数进行验证,确保数据的有效性。 - **结果的处理转发|重定向:** Struts2允许定义多种类型的返回结果,包括转发和重定向,方便地实现不同的业务逻辑处理。 - **国际化:** 支持多语言的应用场景,可以轻松实现不同语言环境的支持。 - **显示页面的等待:** 提供异步处理能力,用户在等待页面加载时可以有更好的体验。 - **防止表单重复提交:** 内置了防止表单重复提交的机制,增强了应用的安全性。 **Struts2的历史:** Struts2并非是Struts1的直接升级版本,在技术实现上二者之间并没有直接关联。实际上,Struts2的前身是WebWork框架,而Struts2则是在WebWork的基础上进一步发展起来的。Struts2不仅继承了WebWork的优点,还吸收了Struts1的一些设计理念,并在此基础上进行了大量改进和优化。 #### 二、搭建Struts2框架 为了开始使用Struts2框架,首先需要完成以下步骤: 1. **打入jar包:** - 将Struts2相关的jar包复制到项目的lib目录下。通常情况下,可以从官方下载最新的Struts2版本,或者使用现有的Struts2示例项目中的jar包,如`struts2-blank.war`。 2. **编写Action类:** - Action类是Struts2中的核心组件之一,负责处理用户的请求,并决定如何响应这些请求。Action类可以是普通的Java POJO(Plain Old Java Object),也可以继承自`ActionSupport`类,后者提供了更多的默认行为和支持。 3. **编写src/struts.xml配置文件:** - 配置文件用来定义应用程序的行为,比如Action的映射、结果类型以及拦截器等。 - 示例配置如下: ```xml <struts> <package name="hello" namespace="/hello" extends="struts-default"> <action name="HelloAction" class="cn.itheima.hello.HelloAction" method="hello"> <result name="success">/hello.jsp</result> </action> </package> </struts> ``` 4. **将Struts2的核心过滤器配置到web.xml中:** - 这一步是为了确保所有的请求都经过Struts2过滤器的处理。 - 示例配置如下: ```xml <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> ``` 5. **测试:** - 通过浏览器访问以下URL来测试是否配置成功: ``` http://localhost:8080/struts2_01/hello/HelloAction ``` #### 三、Struts2访问流程 当用户通过浏览器发送请求到服务器时,Struts2的核心过滤器会捕获该请求,并根据配置的Action和拦截器链来处理请求。具体流程如下: 1. **请求到达Struts2过滤器:** 过滤器会解析请求,并查找相应的Action配置。 2. **创建Action实例:** 根据配置文件中的Action信息,创建对应的Action实例。 3. **执行拦截器链:** 在Action执行之前,先执行一系列拦截器,这些拦截器可以执行前置操作(如验证请求参数)、后置操作(如清理资源)等。 4. **执行Action方法:** 执行Action中的指定方法。 5. **处理返回结果:** 根据Action返回的结果类型(如success、error等),选择相应的页面进行渲染。 6. **响应用户:** 最终将处理好的结果发送给用户。 #### 四、Struts2的详细配置 **1. Struts2配置:** - **<package>元素:** 用于将一组相关的Action封装在一起,方便管理和复用。 - `name`属性:为包起一个唯一的名字。 - `namespace`属性:定义命名空间,用于区分不同模块或层次的Action。 - `extends`属性:指定该包继承自哪个已有的包,从而继承其配置。 - 示例配置如下: ```xml <package name="hello" namespace="/hello" extends="struts-default"> <action name="HelloAction" class="cn.itheima.hello.HelloAction" method="hello"> <result name="success">/hello.jsp</result> </action> </package> ``` - **Struts2常量的配置:** - 常量配置的位置:可以在`struts.xml`文件中配置,或者在`default.properties`文件中配置。 - 推荐使用`src/struts.xml`进行配置,这样可以更好地管理项目的配置信息。 - 可以配置的常量包括但不限于:国际化资源文件路径、默认拦截器栈、默认结果类型等。 **2. Struts2动态方法调用:** Struts2支持动态方法调用,即通过URL中的特殊符号来调用Action中的不同方法。例如: - URL:`http://localhost:8080/app/demo/DemoAction!method` - 对应Action配置: ```xml <action name="DemoAction" class="com.example.DemoAction"> <result name="success">/success.jsp</result> </action> ``` **3. 拦截器:** - **概念:** 拦截器是在Action执行前后进行的一系列预处理和后处理任务,比如权限验证、日志记录等。 - **特点:** - 可插拔性:可以根据需要添加或移除拦截器。 - 控制访问顺序:可以指定拦截器执行的先后顺序。 - 控制访问拦截器的数量:可以自由组合不同的拦截器来满足特定需求。 - **AOP(面向切面编程)思想:** 通过将横切关注点(如日志记录、事务管理等)从业务逻辑中抽离出来,实现代码的解耦合,提高系统的可维护性和扩展性。 - **拦截器与过滤器的区别:** 拦截器是Struts2特有的概念,与Spring框架中的AOP类似;而过滤器是Servlet容器级别的概念,作用于整个Web应用,范围更广。 通过以上介绍,我们可以看到Struts2不仅提供了一套完整的MVC框架解决方案,还具有高度的灵活性和可扩展性,使得开发者能够更加高效地构建复杂的Web应用。
- 粉丝: 1215
- 资源: 94
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助