struts2理论考试题目 下载本文

1.MVC的各个部分都有那些技术来实现?如何实现?

答:MVC是Model-View-Controller的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示面(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2.说说struts1与struts2的区别 ? ? ? ? ? ? ?

都是MVC的WEB框架;

struts1的前端控制器是一个Servlet,名称为ActionServlet,

struts1的action需要继承Action类,struts2的action可以不继承任何类; Struts1依赖与servlet的API

struts1对同一个路径的所有请求共享一个Action实例,struts2对同一个路径的每个请求分别使用一个独立Action实例对象,所有对于struts2的Action不用考虑线程安全问题;

在struts1中使用formbean封装请求参数,在struts2中直接使用action的属性来封装请求参数; struts1中的多个业务方法放在一个Action中时(即继承DispatchAction时),要么都校验,要么都不校验;对于struts2,可以指定只对某个方法进行校验,当一个Action继承了ActionSupport且在这个类中只编写了validateXxx()方法,那么则只对xxx()方法进行校验;

3.转发和重定向的区别? ? ?

4.Struts2执行流程 ? ? ? ? ?

客户端发出一个指向servlet容器的请求(tomcat)

这个请求经过一系列的过滤器(Filter),最后达到StrutsPrepareAndExecuteFilter

过滤器是struts2框架的心脏,询问ActionMapper类来查找请求中需要用到的Action,

如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象。 ActionProxy

创建一个

ActionInvocation

的实例,并调用

ActionInvocation

invoke(),ActionInvocation实例包含了一系列的拦截器,在调用Action的过程前,涉及到相关拦截器(Intercepter)的调用。 ?

5.拦截器的生命周期 ? ? ? ? ?

每个拦截器都实现了Interceptor接口的java类

init(): 在拦截器对象被创建后立即调用,只会调用一次,一般用来进行相关资源的初始化 intercept(ActionInvocation invocation):每个拦截一个动作请求,该方法就会被调用过一次 destory(): 该方法将在拦截器被销毁前条用,只会调用一次,一般用来释放资源 Struts2默认调用18个拦截器

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

struts2

的过滤器

转发:服务端跳转,在客户端浏览器地址栏中不会显示出转向后的地址,一次请求;

重定向:客户端跳转,浏览器将会得到跳转的地址,并重新发送请求链接,两次请求。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用重定向。

struts2的前端控制器是一个filter,在struts2.1中叫StrutsPrepareAndExecuteFilter;

Struts2不依赖与Servlet的API

6.Struts2有哪些优点 ? ? ? ? ? ? ?

7.Struts2常量的修改方式?

常量可以在struts.xml或struts.properties中配置 ? ?

8.Struts2如何访问HttpServletRequest,HttpSession,ServletContext,HttpServletResponse? 方式一:主动获取

HttpServletRequest request =ServletActionContext.getRequest();

HttpSession session =request.getSession();

ServletContext application =session.getServletContext(); 在struts.xml中配置常量 在struts.properties中配置常量

Strtus.action.extension=do

在软件设计上struts2的应用不依赖于Servlet API和Struts API,属于无侵入式设计; 强大的拦截器,实现了如参数拦截输入,文件上传,校验等功能 类型转换器,实现了字符串与特殊数据类类的转换 Struts2可以对指定某个方法进行校验

提供了全局范围。包范围和action范围的国际化资源文件管理 为应用程序添加了全局的result,和声明式异常处理 可以实现模块化管理,将应用程序模块化

HttpServletResponse response=ServletActionContext.getResponse();

方式二:依赖框架注入

定义类实现implements ServletRequestAware,ServletResponseAware,注入请求对象和响应对象,session对象和application对应通过request间接获得。

9.Struts2如何管理aciton,这种管理方式有什么好处?

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

10.Strus2中校验的执行流程 ? ? ? ?

11.介绍ActionContext,ServletContext,pageContext?

ActionContext是当前Action的上下文,通过ActionContext可以获取request,session.applicationd等于Action有关的对象引用。

ServletContext是域对象,生命周期伴随整个web应用。

类型转换不管是否成功后,都会进行校验

先调用validateXxx()进行校验,只会校验action中方法名为xxx()的方法,如果校验失败,添加校验失败信息

再调用validate()方法,会校验action中所有与execute方法签名相同的方法,如果校验失败,添加校验失败信息

如果校验失败,则跳转到name=“input”的result指定的页面,否则,调用action的具体方法

pageContext也是一个域对象,其作用范围只是当前页面。 12.Ajax的优点 ? ? ?

页面无刷新,用户的体验非常好。 与服务器通信,具有更加迅速的响应能力。

可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。 ?

13.Ajax的缺点 ? ? ? ? ?

14.XMLHttpRequest对象的常用属性和方法 常用属性:

readyState属性:请求的状态,有5个可取值 0=未初始化 ,1=正在加载 2=以加载,3=交互中,4=完成

responseText 属性: 服务器的响应,表示为一个字符串 reponseXML 属性:服务器的响应,表示为XML格式的对象

status :服务器的HTTP状态码,200对应ok 400对应not found。

常用方法:

open(“method”,”URL”) 建立对服务器的调用;

第一个参数是HTTP请求,方式可以为GET,POST或任何服务器所支持的您想调用的方式。 第二个参数是请求页面的URL。 send()方法,发送具体请求

15.谈谈XMLHttpRequest对象

Ajax的核心是JavaScript对象XMLHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XMLHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。通过XMLHttpRequest对象,Web开发人员可以在页面加载以后进行页面的局部更新。

破坏浏览器后退按钮的正常行为。

安全问题 AJAX暴露了与服务器交互的细节。 对搜索引擎的支持比较弱。 破坏了程序的异常机制。 不容易调试。

不需要下载插件或者小程序