SSH理解——Struts2篇
Posted 夕冰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH理解——Struts2篇相关的知识,希望对你有一定的参考价值。
一、谈谈你对Struts的理解
struts是一个按MVC模式设计的Web层框架,其实它就是一个大大的servlet,这个Servlet名为ActionServlet,或是ActionServlet的子类。我们可以在web.xml文件中将符合某种特征的所有请求交给这个Servlet处理,这个Servlet再参照一个配置文件(通常为/WEB-INF/struts-config.xml)将各个请求分别分配给不同的action去处理。
一个扩展知识点:struts的配置文件可以有多个,可以按模块配置各自的配置文件,这样可以防止配置文件的过度膨胀;
ActionServlet把请求交给action去处理之前,会将请求参数封装成一个formbean对象(就是一个Java类,这个类中的每个属性对应一个请求参数),封装成一个什么样的formbean对象呢?看配置文件。
要说明的是, ActionServlet把formbean对象传递给action的execute方法之前,可能会调用formbean的validate方法进行校验,只有校验通过后才将这个formbean对象传递给action的execute方法,否则,它将返回一个错误页面,这个错误页面由input属性指定,(看配置文件)作者为什么将这里命名为input属性,而不是error属性,我们后面结合实际的运行效果进行分析。
action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。
二、自己的话简介Struts2执行流程
客户端浏览器发出HTTP请求。
根据web.xml配置,该请求被FilterDispatcher接收。
根据struts.xml配置,找到需要调用的Action类和方法,并通过IoC方式,将值注入给Aciton。
Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
返回HTTP响应到客户端浏览器。
三、Struts2框架的大概处理流程如下
加载类(FilterDispatcher)
读取配置(struts配置文件中的Action)
派发请求(客户端发送请求)
调用Action(FilterDispatcher从struts配置文件中读取与之相对应的Action)
启用拦截器(WebWork拦截器链自动对请求应用通用功能,如验证)
处理业务(回调Action的execute()方法)
返回响应(通过execute方法将信息返回到FilterDispatcher)
查找响应(FilterDispatcher根据配置查找响应的是什么信息如:SUCCESS、ERROR,将跳转到哪个jsp页面)
响应用户(jsp--->客户浏览器端显示)
struts2标签库(相比struts1的标签库,struts2是大大加强了,对数据的操作功能很强大)
四、在Struts2中怎样把请求分发给方法去处理?
在struts.xml中就只需要配置一个action,在一个Action类中分发Action请求调用不同的方法。
五、 Sturst的ActionServlet类
ActionServlet继承自javax.servlet.http.HttpServlet类,其在Strutsframework中扮演的角色是中心控制器。它提供一个中心位置来处理全部的终端请求。
控制器ActionServlet主要负责将HTTP的客户请求信息组装后,根据配置文件的指定描述,转发到适当的处理器。
按照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实例。
六、Struts2中常见的拦截器有哪些?
上传,重复提交,数字转换,表单认证,国际化,等等
七、请简述Struts2中自定义拦截器的步骤?
首先要实现Interceptor(拦截器)接口
在配置文件中定义自己的拦截器。
最后还要把系统提供的默认拦截器加上,否则系统默认拦截器不起作用。
坚持一件事 · 第四十六期
希望每个点赞的你,都能把爱的人揽入怀
以上是关于SSH理解——Struts2篇的主要内容,如果未能解决你的问题,请参考以下文章