一、Struts2工作原理
- 客户端请求(HTTP Request)
- 客户端(如浏览器)发送一个HTTP请求到Web服务器。这个请求包含了请求的URL、参数等信息。例如,用户在浏览器中输入一个Struts2应用相关的网址,如
http://example.com/myStruts2Action.action。
- 客户端(如浏览器)发送一个HTTP请求到Web服务器。这个请求包含了请求的URL、参数等信息。例如,用户在浏览器中输入一个Struts2应用相关的网址,如
- FilterDispatcher(核心过滤器)
- 在Struts2框架中,FilterDispatcher是一个核心的Servlet过滤器。它负责拦截所有的请求。
- 它的主要工作包括:
- 解析请求的URL,确定请求对应的Action(业务逻辑处理类)。例如,如果请求的URL是
/user/login.action,它会根据配置找到对应的UserLoginAction类。 - 加载Struts2的配置文件(通常是
struts.xml),该配置文件包含了关于Action的映射、拦截器等重要信息。
- 解析请求的URL,确定请求对应的Action(业务逻辑处理类)。例如,如果请求的URL是
- ValueStack(值栈)的创建与准备
- 在处理请求的过程中,Struts2会创建一个ValueStack对象。ValueStack是一个类似于数据存储容器的结构。
- 它会将请求相关的数据(如请求参数等)放入ValueStack中。例如,如果请求中有
username和password两个参数,这些参数会被设置到ValueStack相应的属性上。
- Interceptors(拦截器)处理
- 拦截器是Struts2中一个重要的概念。在执行Action之前,会按照配置顺序依次执行一系列的拦截器。
- 拦截器可以完成诸如参数验证、日志记录、权限检查等功能。例如,一个参数验证拦截器可以检查请求中的参数是否符合要求,如果不符合则可以直接返回错误信息,而不会执行后续的Action。
- 每个拦截器都有
intercept方法,在这个方法中可以对请求进行处理,并且可以决定是否继续调用下一个拦截器或者直接调用Action。
- Action Execution(Action执行)
- 经过拦截器链后,最终会执行对应的Action类中的方法。
- Action类是用户编写的业务逻辑处理类,它包含了处理具体业务逻辑的方法。例如,一个
UserLoginAction类可能有一个login方法,用于验证用户登录信息是否正确。 - Action可以与模型(Model)进行交互,例如访问数据库、调用业务逻辑层的方法等,然后将处理结果返回。
- Result Processing(结果处理)
- Action执行完成后会返回一个结果码(如
success、error等)。 - 根据这个结果码,Struts2会在配置文件(
struts.xml)中查找对应的结果视图(View)配置。例如,如果结果码是success,可能会跳转到一个success.jsp页面,这个页面的配置是在struts.xml中通过<result>标签来定义的。
- Action执行完成后会返回一个结果码(如
- View Rendering(视图渲染)
- 找到对应的视图(如JSP页面)后,Struts2会将ValueStack中的数据传递给视图。
- 在视图中可以使用Struts2的标签库(如
<s:property&

最低0.47元/天 解锁文章
9万+

被折叠的 条评论
为什么被折叠?



