面试题首页 > Struts2面试题

Struts2常见面试题

001谈谈你对MVC的理解?

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。
视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。
模型: 模型表示业务数据和业务处理。相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性。
控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。然后根据处理的结果调用相应的视图来显示处理的结果。
MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。

002简单介绍一下Struts2?

Struts2框架是一个按照MVC设计模式设计的WEB层框架,是在Struts 1和WebWork的技术基础上进行了合并的全新的框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开。
我们可以把Struts2理解为一个大大的Servlet,而这个Servlet就是ActionServlet。Struts2在处理客户端请求时,会先读取web.xml配置文件,根据前端控制器将符合条件的请求分给各个不同的Action处理。在此之前,ActionServlet会把数据封装成一个JavaBean。
Struts2框架提供了许多的拦截器,在封装数据的过程中,我们可以对数据进行一些操作,例如:数据校验等等。当Action执行完后要返回一个结果视图,这个结果视图可以跟据struts2的配置文件中配置,选择转发或者重定向。

003Struts2有哪些优点?

1.在软件设计上Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设计属于无侵入式设计; 
2.拦截器,实现如参数拦截注入等功能; 
3.类型转换器,可以把特殊的请求参数转换成需要的类型; 
4.多种表现层技术,如:JSP、freeMarker、Velocity等; 
5.Struts2的输入校验可以对指定某个方法进行校验; 
6.提供了全局范围、包范围和Action范围的国际化资源文件管理实现;

004Struts2是如何启动的?

1.Struts2框架是通过Filter启动的,即StrutsPrepareAndExecuteFilter,此过滤器为struts2的核心过滤器; 
2.StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。struts2读取到struts.xml的内容后,是将内容封装进javabean对象然后存放在内存中,以后用户的每次请求处理将使用内存中的数据,而不是每次请求都读取struts.xml文件。

005Strust2如何访问Servlet API?

1)通过ActionContext可以获得request,application,session三个作用域(struts2实际上是通过适配器来把servlet的api转换为一个map,并把这些map放在ActionContext里面)。
2)通过ActionContext的子类ServletActionContext去获取原滋原味的API。
3)可以通过实现ServletRequestAware接口,重写里面的setServletRequest方法可以获得request,实际上是通过set的依赖注入。

006Struts2 如何定位action中的方法?

1)感叹号定位方法(动态方法)。
2)在xml配置文件中通过配置多个action,使用action的method指定方法。
3)使用通配符(*)匹配方法。

007result的type属性中有哪几种结果类型?

一共10种:   
dispatcher是默认的结果类型,把控制权转发给应用程序里的某个资源。
redirect把响应重定向到另一个资源(包括一个外部资源) 
redirectAction把响应重定向到另一个 Action 
freemarker、velocity、chain、httpheader、xslt、plainText、stream 

008ActionContext、ServletContext、pageContext的区别?

1.ActionContext是当前的Action的上下文环境,通过ActionContext可以获取到request、session、ServletContext等与Action有关的对象的引用; 
2.ServletContext是域对象,一个web应用中只有一个ServletContext,生命周期伴随整个web应用; 
3.pageContext是JSP中的最重要的一个内置对象,是JSP四个域对象中最小的。可以通过pageContext获取其他域对象的应用,同时它是一个域对象,作用范围只针对当前页面,当前页面结束时,pageContext销毁。

009Struts2常量的修改方式?

常量可以在struts.xml或struts.properties中配置,两种配置方式如下: 
1.在struts.xml文件中配置常量 
<constant name="struts.action.extension" value="do"/> 
2.在struts.properties中配置常量(struts.properties文件放置在src下): 
struts.action.extension=do

目录

返回顶部