SSH理解——Struts2篇

Posted 夕冰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH理解——Struts2篇相关的知识,希望对你有一定的参考价值。

一、谈谈你对Struts的理解

  1. struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。

  2. 一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀;

  3. ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个Java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。

  4. 要说明的是, ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定,(看配置文件)作者为什么将这里命名为input属性,而不是error属性,我们后面结合实际的运行效果进行分析。

  5. action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。SSH理解——Struts2篇

二、自己的话简介Struts2执行流程

  1. 客户端浏览器发出HTTP请求。

  2. 根据web.xml配置,该请求被FilterDispatcher接收。

  3. 根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。

  4. Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

  5. Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

  6. 返回HTTP响应到客户端浏览器。

SSH理解——Struts2篇

三、Struts2框架的大概处理流程如下

  1. 加载类(FilterDispatcher)

  2. 读取配置(struts配置文件中的Action)

  3. 派发请求(客户端发送请求)

  4. 调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action)

  5. 启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)

  6. 处理业务(回调Action的execute()方法)

  7. 返回响应(通过execute方法将信息返回到FilterDispatcher)

  8. 查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面)

  9. 响应用户(jsp--->客户浏览器端显示)

  10. struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)SSH理解——Struts2篇

四、在Struts2中怎样把请求分发给方法去处理?

在struts.xml中就只需要配置一个action,在一个Action类中分发Action请求调用不同的方法。SSH理解——Struts2篇

五、 Sturst的ActionServlet类

  1. ActionServlet继承自javax.servlet.http.HttpServlet类,其在Strutsframework中扮演的角色是中心控制器。它提供一个中心位置来处理全部的终端请求。

  2. 控制器ActionServlet主要负责将HTTP的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器。

  3. 按照Servelt的标准,所有得Servlet必须在web配置文件(web.xml)声明。同样,ActoinServlet必须在WebApplication配置文件(web.xml)中描述,有关配置信息如下。
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-             class>
    </servlet>
    全部的请求URI以*.do的模式存在并映射到这个servlet,其配置如下:
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    一个该模式的请求URI符合如下格式:
    http://127.0.0.1:8080/xice/actionName.do

当用户向服务器端提交请求的时候,实际上信息是首先发送到控制器ActionServlet,一旦控制器获得了请求,其就会将请求信息传交给一些辅助类(helpclasses)处理。这些辅助类知道如何去处理与请求信息所对应的业务操作。在Struts中,这个辅助类就是org.apache.struts.action.Action。通常开发者需要自己继承Aciton类,从而实现自己的Action实例。

SSH理解——Struts2篇

六、Struts2中常见的拦截器有哪些?

上传,重复提交,数字转换,表单认证,国际化,等等

SSH理解——Struts2篇

七、请简述Struts2中自定义拦截器的步骤?

  1. 首先要实现Interceptor(拦截器)接口  

  2. 在配置文件中定义自己的拦截器。  

  3. 最后还要把系统提供的默认拦截器加上,否则系统默认拦截器不起作用。

坚持一件事 · 第四十六期

希望每个点赞的你,都能把爱的人揽入怀

以上是关于SSH理解——Struts2篇的主要内容,如果未能解决你的问题,请参考以下文章

SSH框架——Struts2篇

SSH框架——Struts2篇

SSH框架——struts2篇

SSH开发模式——Struts2(第三小节)

SSH开发模式——Struts2(第二小节)

ssh-ssh整合(Struts2+Sprinig+hibernate)