📅  最后修改于: 2023-12-03 14:47:44.293000             🧑  作者: Mango
Struts 2是一个基于MVC设计模式的Web应用程序框架,具有容易学习、易于开发、易于维护和良好扩展性的特点。Struts 2框架的核心是Interceptors拦截器,这个拦截器可以很好的协调各个组件之间的关系,同时提供了很多扩展点供开发人员进行自定义处理。
Struts 2的整体架构如下:
Action是Struts2中的核心组件,是处理Web请求的中心。每个Action类通常会处理一个特定的请求,它可以是一个普通Java类或者是Struts2中提供的Action支持的类。
Action类需要实现com.opensymphony.xwork2.Action
接口,并且需要实现其execute()
方法。Action的方法可以接收请求发过来的参数,方法名可以随意改变,但是接收参数的名称需要与请求中参数的名称相同,否则无法获取参数。
package com.example.action;
import com.opensymphony.xwork2.Action;
public class ExampleAction implements Action {
private String message;
public String execute() throws Exception {
message = "Hello World!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
拦截器是Struts2中处理请求的关键组件,每个请求在被处理前都会经历多个拦截器的处理。拦截器提供了开发人员自定义处理请求、响应和处理异常的机制。Struts2中提供了多个标准的拦截器,包括:
<package name="example" extends="struts-default">
<interceptors>
<interceptor name="authInterceptor" class="com.example.Interceptor.AuthInterceptor"/>
<interceptor name="logInterceptor" class="com.example.Interceptor.LogInterceptor"/>
<interceptor-stack name="example.interceptorStack">
<interceptor-ref name="authInterceptor" />
<interceptor-ref name="logInterceptor" />
<interceptor-ref name="paramsPrepareParamsStack"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="example.interceptorStack" />
<action name="example" class="com.example.action.ExampleAction">
<result name="success">/example.jsp</result>
</action>
</package>
Result是处理Action返回结果的核心组件。一个Action的处理结果可以是HTML、XML或JSON等格式,Result负责将结果呈现给用户。Struts2中提供了多种标准的Result,包括:
<result name="success" type="dispatcher">/example.jsp</result>
<result name="input" type="redirectAction">example.action?error=true</result>
Struts 2是一个功能强大而灵活的MVC框架,它提供了很多标准组件,并且支持扩展,开发人员可以利用这些组件和扩展点快速开发Web应用。在学习Struts 2时,需要理解它的整体架构和核心组件,并且需要把握好每个组件的作用和用法。