Struts2面试题1

来源:互联网 发布:淘宝没有生产许可证 编辑:程序博客网 时间:2024/05/16 16:57
struts2有哪些优点? 1)在软件设计上Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设计属于无侵入式设计; 2)拦截器,实现如参数拦截注入等功能; 3)类型转换器,可以把特殊的请求参数转换成需要的类型; 4)多种表现层技术,如:JSP、freeMarker、Velocity等; 5)Struts2的输入校验可以对指定某个方法进行校验; 6)提供了全局范围、包范围和Action范围的国际化资源文件管理实现 struts2是如何启动的? struts2框架是通过Filter启动的,即StrutsPrepareAndExecuteFilter,此过滤器为struts2的核心过滤器; StrutsPrepareAndExecuteFilter的init()方法中将会读取类路径下默认的配置文件struts.xml完成初始化操作。struts2读取到struts.xml的内容后,是将内 容封装进javabean对象然后存放在内存中,以后用户的每次请求处理将使用内存中的数据,而不是每次请求都读取struts.xml文件 struts2框架的核心控制器是什么?它有什么作用? 1)Struts2框架的核心控制器是StrutsPrepareAndExecuteFilter。 2)作用: 负责拦截由/*指定的所有用户请求,当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径 不带后缀或者后缀以.action结尾,这时请求将被转入struts2框架处理,否则struts2框架将略过该请求的处理。 可以通过常量"struts.action.extension"修改action的后缀,如: 如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号(,)隔开。如: struts2配置文件的加载顺序? struts.xml ——> struts.properties 常量可以在struts.xml或struts.properties中配置,如果在多个文件中配置了同一个常量,则后一个文件中配置的常量值会覆盖前面文件中配置的常量值. struts.xml文件的作用:通知Struts2框架加载对应的Action资源 struts2常量的修改方式? 常量可以在struts.xml或struts.properties中配置,两种配置方式如下: 1)在struts.xml文件中配置常量 2)在struts.properties中配置常量(struts.properties文件放置在src下): struts.action.extension=do struts2如何访问HttpServletRequest, HttpSession 和 ServletContext三个域对象? 方案一: HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); HttpSession session = request.getSession(); ServletContext servletContext = ServletActionContext.getServletContext(); 方案二: 类 implements ServletRequestAware,ServletResponseAware,SessionAware,ServletContextAware 注意:框架自动传入对应的域对象 struts2是如何管理action的?这种管理方式有什么好处? struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的。 主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。 struts2中的默认包struts-default有什么作用? 1)struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型,而Struts2很多核心的功能都是通过这些内置的拦截器实现,如:从请求中 把请求参数封装到action、文件上传和数据验证等等都是通过拦截器实现的。当包继承了struts-default包才能使用struts2为我们提供的这些功能。 2)struts-default包是在struts-default.xml中定义,struts-default.xml也是Struts2默认配置文件。 Struts2每次都会自动加载 struts-default.xml文件。 3)通常每个包都应该继承struts-default包, struts2的工作流程? 用户请求 ——> StrutsPrepareAndExecuteFilter ——> Interceptor ——> Action ——> Result ——> Jsp/html ——> 响应 struts2的action的URL访问路径由什么构成? 由两部分组成:包的命名空间+action的名称 [ + action的后缀 ],即:package.namespace + action.name 在struts.xml中可以不为action指定class属性吗?struts2中有哪些默认的属性? 可以,如果没有为action指定class,默认是com.opensymphony.xwork2.ActionSupport 默认属性: 如果没有为action指定class ActionSupport 如果没有为action指定method execute() 注意:ActionSupport的execute方法里面就一句话return "success"; 如果没有指定result的name success 如果没有指定result的type dispatcher action中默认都有一个拦截器的引用,即:; 注意: 1)一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用,所以此时要显式的引进默认的拦截器; 2)每个包只能指定一个默认拦截器,每个默认拦截器只针对当前包下有效。 struts2如何对指定的方法进行验证? 1)validate()方法会校验action中所有与execute方法签名相同的方法; 2)要校验指定的方法通过重写validateXxx()方法实现, validateXxx()只会校验action中方法名为Xxx的方法。其中Xxx的第一个字母要大写; 3)当某个数据校验失败时,调用addFieldError()方法往系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action可以继承ActionSupport), 如果系统 的fieldErrors包含失败信息,struts2会将请求转发到名为input的result; 4)在input视图中可以通过显示失败信息。 5
0 0
原创粉丝点击