Struts2处理流程解析:从用户请求到响应

需积分: 0 0 下载量 102 浏览量 更新于2024-08-18 收藏 286KB PPT 举报
"了解Struts2的处理流程及核心组件" Struts2是Java Web开发中的一个流行MVC框架,是三大主流Java EE框架之一,它简化了基于Java Servlet的Web应用程序的开发。Struts2的核心在于其强大的拦截器(Interceptor)机制,使得开发者能够实现灵活的业务逻辑和控制流程。 首先,我们来详细解析Struts2的处理流程: 1. **用户请求**:当用户通过浏览器向服务器发送HTTP请求时,这个请求会指向Struts2框架。 2. **FilterDispatcher**:在Web应用的`web.xml`配置文件中,我们定义了一个名为`struts2`的过滤器(Filter)。这个过滤器的类是`org.apache.struts2.dispatcher.FilterDispatcher`。它负责捕获所有的HTTP请求,并将请求交给Struts2框架处理。 3. **Interceptor(拦截器)**:一旦FilterDispatcher捕获到请求,它会根据配置的拦截器栈来处理请求。Struts2内置了一些拦截器,如`params`(用于填充Action的属性)、`i18n`(处理国际化)等。同时,开发者也可以自定义拦截器,实现特定的功能,如权限验证、日志记录等。拦截器按照栈的顺序执行,形成一个处理链。 4. **Action(动作)**:经过拦截器处理后,请求会被转发到用户编写的Action类。Action类是业务逻辑的载体,它对应于Struts1中的Action,负责处理请求并返回结果。 5. **Result(结果)**:Action执行完毕后,会返回一个结果。这个结果可以是跳转到另一个Action,也可以是渲染一个视图,如JSP页面。Struts2使用`Result`来决定如何处理这个结果。常见的结果类型有`dispatcher`(转发到JSP页面)和`redirect`(重定向到其他URL)。 6. **Jsp/html**:最后,Struts2会将控制权交给JSP或HTML页面,这些页面负责展示数据并生成最终的HTML响应,返回给客户端。 关于Struts2的依赖库,我们需要确保引入了以下关键的JAR文件: - `struts2-core-2.x.x.jar`:Struts2框架的核心库,包含了Action、Interceptor等核心组件。 - `xwork-2.x.x.jar`:XWork库,是Struts2的基础,提供了许多底层功能。 - `ognl-2.x.x.jar`:OGNL(Object-Graph Navigation Language),Struts2的表达式语言,用于数据绑定和访问对象属性。 - `freemarker-2.3.x.jar`:FreeMarker模板引擎,用于生成动态HTML页面。 - `commons-logging-1.1.x.jar`:Apache Commons Logging,提供日志服务,可以与Log4J或其他日志系统集成。 - `commons-fileupload`:用于处理文件上传的组件。 如果需要与其他框架集成,比如Spring,还需要相应的插件JAR,如`struts2-spring-plugin-2.x.x.jar`。 Struts2通过FilterDispatcher启动,利用拦截器、Action和Result机制,实现了对用户请求的高效处理和灵活控制,同时也提供了丰富的扩展性,便于开发者构建复杂的Web应用。

192.168.85.1 - - [26/Jun/2022:06:07:07 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 24 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 12925 192.168.85.1 - - [26/Jun/2022:06:07:11 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 200 14 192.168.85.1 - - [26/Jun/2022:06:08:06 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 15 192.168.85.1 - - [26/Jun/2022:06:08:16 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 1227 192.168.85.1 - - [26/Jun/2022:06:10:15 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 79 192.168.85.1 - - [26/Jun/2022:06:13:25 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 404 752 192.168.85.1 - - [26/Jun/2022:06:16:42 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:16:57 -0400] "GET //struts2-showcase/hhh.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:18:55 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:19:02 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 35 192.168.85.1 - - [26/Jun/2022:06:19:09 -0400] "GET //struts2-showcase/hhh1.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:19:34 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 400 192.168.85.1 - - [26/Jun/2022:06:20:37 -0400] "POST /struts2-showcase/index.action HTTP/1.1" 500 5 192.168.85.1 - - [26/Jun/2022:06:20:42 -0400] "GET //struts2-showcase/hhh1.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:20:46 -0400] "GET //struts2-showcase/hhh.jsp HTTP/1.1" 403 642 192.168.85.1 - - [26/Jun/2022:06:20:51 -0400] "GET /struts2-showcase/hhh.jsp HTTP/1.1" 403 642

2023-07-12 上传