Struts2相关概念(很全)---以下是个人总结,未经博主允许不得转载

1.Struts 2是什么?

Struts2 是基于MVC设计模式的Web应用程序框架,是Struts的下一代产品,但更算是WebWork的更新产品。

2.Struts 2的体系结构?

Struts 2 体系结构大致可以分成三个部分:

核心控制器、业务控制器、业务逻辑组件。

①.核心控制器【StrutsPrepareAndExecuteFilter】:是Struts2框架的基础,包含了框架自身内部的流程控制和处理机制。

②.业务控制器【Action】和业务逻辑组件:则是由用户自己编写实现,它在实现过程中要编写相关的配置文件,提供给核心控制器来使用。

3.Struts 2的工作处理流程?

基本流程如下:

①.客户端【用户浏览器】向Servlet容器【Tomcat】发送一个请求;

②.服务器通过Web.xml映射请求,经过一些列的过滤器【Filter】,并找到Struts2控制器;

③.控制器【FilterDispatcher或者StrutsPrepareAndExecuteFilter{看Struts2版本}】被调用;

④.通过ActionMapper决定这个请求是否需要通过Struts2处理并调用某个Action;

⑤.如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

⑥.ActionProxy读取struts.xml文件获取Action和Interceptor Stack的信息;

⑦.然后ActionProxy创建一个ActionInvocation的实例;

⑧.ActionInvocation依次调用Action和Interceptor;

⑨.Action执行完毕,ActionInvocation负责根据Struts.xml中的配置找到对应的返回结果。

⑩.匹配返回结果产生一个服务端的响应,并将响应行为发送给客户端。

4.Struts 2的优点?

①.实现MVC模式,设计结构清晰。

②.拦截器实现参数拦截,以及参数注入等功能;

③.类型转换器,可以把特殊的请求参数转换成需要的类型。

④.提供了全局范围、包范围和Action范围的国际化资源文件管理实现;

⑤.AJAX的支持、插件的支持、多视图支持以及标签的支持;

⑥.易于框架的整合,配置量少,提供了内置的测试;

5.Struts 2的缺点?

①.学习该框架所依赖的技术教多,代码透明度低,需要更长的学习曲线;

②.不够先进,逐渐开始难以满足现今的开发任务。

6.Struts 2配置文件的加载顺序?

①.核心包中的默认配置struts-default.xml;

②.各个插件包中的配置struts-plugin.xml;

③.用户编写的控制配置struts.xml;

④.用户编写的常量配置struts.properites;

7.Struts 2常量的修改方式?

①.在struts.xml中通过标签配置;

<constant name=” struts.devMode” value=”true”/>

②.在struts.properites文件中键值对配置:

struts.devMode=true

③.解压Struts核心包中org.apache.struts2.default.properties直修接改;

8.Struts2中Result中的type类型?

①.dispatcher:它是默认的,用来转向页面,通常处理JSP;

②.redirect:将用户重定向到一个已配置好的URL;

③.redirectAction:将用户重定向到一个已定义好的action;

④.chain:将action和另外一个action链接起来;

⑤.freemarker:呈现Freemarker模板;

⑥.httpheader:返回一个已配置好的HTTP头信息响应;

⑦.stream:向浏览器发送InputSream对象对下载的内容和图片非常有用;

⑧.velocity:呈现Velocity模板;

⑨.xslt:该XML可以通过XSL模板进行转换;

⑩.plaintext:显示原始文件内容,例如文件源代码;

9.Struts2中如何访问HttpServletRquest,HttpSession,ServletContext三个域对象?

通过静态对象ServletActionContext获取;

10.Struts2是如何管理Action的,这种管理有什么好处?

Struts2框架中使用Packager包来管理Action,作用与Java中的类包相似,主要用于管理同一业务组功能相关的Action,在实际运用中,我们应该把一组业务功能相关的Action放在同一个包下。

11.Struts2中的默认包.struts2-default有什么作用,在使用中我们为什么要继承它?

struts-default包是Struts内置的,他定义了Struts2中内部众多的拦截器和返回值类型,众多核心功能都是通过这些内置的拦截器实现的,如:参数的封装、文件上传下载、数据验证等等都是通过拦截器实现的。

当我们的包继承了Struts-default包才能使用Struts2为我们提供的这些功能,所以通常我们每个包都是要继承Struts-default包的;

12.Struts2默认拦截器?

alias【别名拦截器】:允许参数在跨越多个请求时使用不同别名,这个拦截器可将多个action使用不同名字链接起来,然后用于处理同一信息;

autowiring【自动装配拦截器】:信息自动装配的拦截器,主要用于当struts2和Spring整合时,Struts可以使用自动装配的方式来访问Spring容器中的Bean;

chain【链拦截器】:允许当前action能够使用上一个被执行action的属性,这个拦截器通常要和“chain”结果类型一起使用(<result type=”chain”…/>);

checkbox【多选框拦截器】:为没有被选定的多选框增加一个值为false的参数,协助管理多选框(在HTTP请求里,那些没有被选定的多选框通常是没有任何信息的);

conversionError【转换错误拦截器】:将转换错误的信息(包括转换的字符串和参数类型等)存放到action的字段错误集里去;

cookie【Cookie拦截器】:使用配置的name,value来指定cookies;

clearSession【清除Session拦截器】:负责销毁HttpSeesion;

createSession【会话创建拦截器】:自动创建一个HttpSession会话(如果会话不存在),用来为需要使用到HttpSession的拦截器服务;

debugging【调试拦截器】:当使用Struts2的开发模式时,此拦截器会提供更多的调试信息,为开发者提供几种不同调试界面;

externalRef【扩展引用拦截器】:负责扩展引用;

execAndWait【执行和等待拦截器】:当action在后台执行时,给用户显示一个过渡性的等待页面;

exception【异常拦截器】:将action抛出的异常映射到结果,这样就通过重定向来自动处理异常,一般情况下,应该为最后一个拦截器;

fileUpload【文件上传拦截器】:此拦截器主要用于文件上传,它负责解析表单中文件域的内容;

i18n【国际化拦截器】:这是支持国际化的拦截器,它负责把所选的语言、区域放入用户Session中;

logger【日志拦截器】:通过输出被执行action的名字,提供简单的日志功能,记录用于追踪的信息(可位于拦截器序列的不同位置);

store【消息存储拦截器】:在会话中为action存储和检索消息、字段错误以及action错误,该拦截器要求action实现ValidationAware接口;

modelDriven【模型驱动拦截器】:这是一个用于模型驱动的拦截器,当某个Action类实现了ModelDriven接口时,它负责把getModel()方法的结果放入ValueStack中;

scopedModelDriven【作用域模型驱动拦截器】:如果一个Action实现了一个ScopedModelDriven接口,该拦截器负责从指定生存范围中找出指定的Modol,并将通过setModel方法将该Model传给Action实例;

params【参数拦截器】:这是最基本的一个拦截器,它负责解析HTTP请求中的参数,并将参数值设置成Action对应的属性值

prepare【预备拦截器】:如果action实现Preparable接口,将会调用该拦截器的prepare()方法;

profiling【概要拦截器】:允许action记录简单的概要信息日志;

scope【作用域拦截器】:这是范围转换拦截器,它可以将Action状态信息保存到HttpSession范围,或者保存到ServletContext范围内;

servletConfig【Servlet配置拦截器】:如果某个Action需要直接访问ServletAPI,就是通过这个拦截器实现,它提供访问HttpServletRequest和HttpServletResponse的方法,以map的方式访问;

staticParams【静态参数拦截器】:设置action里的静态定义值(通过action配置里的param标签来实现);这个拦截器负责将struts.xml文件中<action>标签下<param>标签中的参数传入action;

roles【角色拦截器】:这是一个JAAS(Java Authentication and Authorization Service, Java授权和认证服务)拦截器,只有当浏览者取得合适的授权后,才可以调用被该拦截器拦截的Action;

timer【计时拦截器】:以执行action所花时间的形式,简单记录action概要信息,此拦截器负责输出Action的执行时间,可以利用此拦截器分析该Action的性能瓶颈;

token【令牌拦截器】:检查action的合法令牌,以防止重复提交表单,当表单被多次提交时,跳转到一个错误页面;

tokenSession【令牌会话拦截器】:功能与令牌拦截器相同,但是对于非法令牌,提交的数据将保存在会话中,不跳转到错误页面,再次生成与第一次相同的页面;

validation【验证拦截器】:通过执行在xxxAction-validation.xml中定义的校验器,从而完成数据校验;

workflow【工作流拦截器】:为action定义默认的工作流,一般跟在validation等其他拦截器后,当验证失败时,不执行action然后重定向到INPUT视图;

jsonValidation【Json拦截器】:验证失败,此拦截器可以将fieldErrors和actionErrors两个属性给序列化成json返回给客户端;

13.Struts2拦截器的生命周期与工作过程?

①.每个拦截器都是实现了Interceptor接口的JAVA类;

②.拦截器中Init()方法:初始化方法,他在拦截器被创建后立即被调用,拦截器生命周期内只被调用一次,可以在该方法中对相关资源进行必要的初始化。

③.拦截器中Intercept(ActionInvocation invocation)方法:默认执行方法,每拦截一个动作请求,该方法就会被调用一次;

④.拦截器中destory方法:遗言方法,该方法将在拦截器被销毁之前被调用,拦截器生命周期内只被调用一次;

14.Struts2值栈的原理与生命周期?

①.值栈贯穿整个Action的生命周期,保存在request域中;

当Struts2接受到请求时,会迅速创建ActionContext,Value Stack,Action;

然后将Action存入ValueStack中;

请求结束后Action 和 ValueStack生命周期结束;

②.Action是多例的,每访问一次,会生成一个Action实例;

③.值栈的本质是一个List集合;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值