首页技术struts2框架中的控制器 struts2框架由什么组成

struts2框架中的控制器 struts2框架由什么组成

编程之家2026-07-01969次浏览

各位老铁们好,相信很多人对struts2框架中的控制器都不是特别的了解,因此呢,今天就来为大家分享下关于struts2框架中的控制器以及struts2框架由什么组成的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

struts2框架中的控制器 struts2框架由什么组成

struts2的核心控制器是什么 2、什么是拦截器 3、什么是值栈

FilterDispatcher也是Struts2的核心技术。

FilterDispatcher核心控制器执行以下操作:

(1)读取静态数据信息

(2)决定需要转发或者导航的Action配置

(3)创建Action的Context

(4)创建Action代理

struts2框架中的控制器 struts2框架由什么组成

(5)内存清理和性能优化

拦截器:Interceptor

拦截器本身是一个普通的Java对象,它能动态拦截Action调用,在Action执行前后执行拦截器本身提供的各种个样的Web项目需求。

也可以阻止Action的执行,同时也可以提取Action中可以复用的部分。

(1)在Action调用之前提供系统处理流程逻辑控制

(2)和Action交互时,提供Ation执行时的一些初始信息

struts2框架中的控制器 struts2框架由什么组成

(3)在Action结束后,一些事后的处理流程逻辑

(4)修改Action中返回的Result信息

(5)捕获异常

值栈是用ognl表达式存值的最初地方,即一个存值的栈

struts2做控制器相比servlet有什么优点

与Servlet相比,Struts的控制器可以不用显式的书写Java代码,而是可以在Struts-Config.xml配置文件中配置相应的Action与URL之间的映射关系以及处理完成后转发给那个JSP来显示处理的结果.

在Struts内部,控制器也是使用一个Servlet来控制转发,这个Servlet叫做ServletAction,但是这个ServletAction的转发规则的定义就映射到了Struts-Config.xml这个结构相对简单的配置文件中,程序员和维护人员可以很容器的定义或修改内部的转发规则.

Servlet也是在Web容器中运行的,Servlet的生命周期容器启动的时候,会加载servlet的class,并new出这个对象,然后,当用户请求这个servlet的时候,容器会调用init方法初始化这个 servlet,这也是整个生命周期中只会调用一次的方法,然后,会调用service方法,由这个方法调用doGet或

doPost方法来响应用户,然后,容器在可用资源紧张或是长期没有对Servlet发出

请求的情况下,会销毁这个servlet。

struts是一个基于MVC模式的一个框架,分别是表示层(view)、控制层(controller)、和模型层(Model)。其表示层使用Struts标签库构建。来自客户的所有需要通过框架的请求统一由叫ActionServlet的servlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.xml)中ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。Action则是Struts应用中真正干活的组件,开发人员一般都要在这里耗费大量的时间,它解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。

Struts2的核心工作原理

.Struts 2的基本流程

Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

2.核心控制器:FilterDispatcher

FilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts 2框架处理。

Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。

Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。

Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。

显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。图3.19显示了这种处理模型。

图3.19 Struts 2的拦截器和Action

从图3.19中可以看出,用户实现的Action类仅仅是Struts 2的Action代理的代理目标。用户实现的业务控制器(Action)则包含了对用户请求的处理。用户的请求数据包含在 HttpServletRequest对象里,而用户的Action类无需访问HttpServletRequest对象。拦截器负责将 HttpServletRequest里的请求数据解析出来,并传给业务逻辑组件Action实例。

3.业务控制器

正如从图3.19所看到的,业务控制器组件就是用户实现Action类的实例,Action类里通常包含了一个execute方法,该方法返回一个字符串——该字符串就是一个逻辑视图名,当业务控制器处理完用户请求后,根据处理结果不同,execute方法返回不同字符串——每个字符串对应一个视图名。

我觉得,问题应该是考察是否对系统架构设计有一定的了解,能否清楚的运用自己的理解表述软件设计中的相互沟通要点。

关于本次struts2框架中的控制器和struts2框架由什么组成的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

asp技术简介 asp技术现在还在用吗函数图像软件 函数图像生成器