Struts2面试题

1、描述Struts2的工作原理
答:客户端发送请求–》请求经过一系列过滤器–》FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action --》FilterDispatcher把请求的处理交给ActionProxy–》通过ConfigurationManager询问Struts配置文件(Struts.xml),找到需要调用的Action类–》ActionProxy创建一个ActionInvocation的实例 --》调用Action–》执行完毕,返回结果
2、Struts2中的拦截器有什么用?列举框架提供的拦截器名称?(至少3种,可用中文名)
答:

1)拦截器是struts2核心组成部分,它提供了一种机制,使得开发者可以定义一个特定的功能模块,这个模块会在Action执行之前或者之后执行,也可以在Action执行之前阻止Action执行。

2)常用的拦截器有:

chain:在不同请求之间将请求参数在不同名字件转换,请求内容不变

fileUpload:提供文件上传。

​i18n:记录用户选择的区域环境

logger:输出Action的名字

params:将请求中的参数设置到Action中去。

3、Struts2有哪些优点?
答:

1)在软件设计上Struts2的应用可以不依赖于Servlet API和struts API。 Struts2的这种设计属于无侵入式设计;

2)拦截器,实现如参数拦截注入等功能;

3)类型转换器,可以把特殊的请求参数转换成需要的类型;

4)多种表现层技术,如:JSP、freeMarker、Velocity等;

5)Struts2的输入校验可以对指定某个方法进行校验;

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

  1. 实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现。有丰富的tag可以用,大大提高了开发效率。(简要)

4、什么是OGNL,有什么用途?如何访问存放在session中叫user的对象的username属性
​答:OGNL是Object-Graph Navigation Language的缩写,也叫对象导航语言。它是Struts的一种功能强大的表达式语言列如:访问session中的user对象的username属性:注意的是:使用前需要在页面头部导入taglib prefix=“s” uri="/struts-tags"
​5、什么是国际化,struts2实现国际化的原理?
答:国际化是根据不同的国家和地区的语言文化的不同,所设计的适用于不同地区的编码格式。

实现方法:

1)首先在src目录下新建message_en.properties(英文);

2)页面获取国际化信息或者使用

原理:程序得到当前运行环境的国际/区域,语言环境并存放于Locale,ResourceBundle根据Locale中信息自动搜索对应的国际化资源文件并加载。

6、AJAX是什么? 描述ajax的原理
答:Ajax又叫异步刷新,(JavaScript和xml)原理:使用HttpRequest向服务器发送异步请求,服务器返回处理结果
7、什么是反射?请用反射动态创建一个类的对象(写关键代码,其它可省略)
答:反射,程序运行时动态获取类型信息,完成对象创建,方法调用等。

例如:

Class myclass=Class.forNama(“包名.类名”);
Student stu=Factory.createInstance(“stu1”);
8、在struts2中如何实现转发和重定向?
答:在struts.xml中配置type=“redirect”(重定向);type=“redirectAction”(转发)
9、Struts2中的type类型有哪些?至少写4种
答:chain,redirect,redirectAction,json,dispatcher
10、struts2默认能解决get和post提交方式的乱码问题吗?
答:不能。struts.i18n.encoding=UTF-8属性值只能解析POST提交下的乱码问题。
11、说下Struts的设计模式
答:MVC模式:

1)web应用程序启动时就会加载并初始化ActionServler。

2)用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法.

3)Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。

12、拦截器和过滤器的区别
答:

1)拦截器是基于java反射机制的,而过滤器是基于函数回调的。

2)过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。

3)拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。

4)拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。

5)在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

13、请你写出struts2中至少5个的默认拦截器?
答:

fileUpload 提供文件上传功能

i18n 记录用户选择的locale

cookies 使用配置的name,value来是指cookies

checkbox 添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的 checkbox。

chain 让前一个Action的属性可以被后一个Action访问,现在和chain类型的result()结合使用。

alias 在不同请求之间将请求参数在不同名字件转换,请求内容不变

14、ActionContext、ServletContext、pageContext的区别?
答:

1)ActionContext是当前的Action的上下文环境,通过ActionContext可以获取到request、session、ServletContext等与Action有关的对象的引用;

2)ServletContext是域对象,一个web应用中只有一个ServletContext,生命周期伴随整个web应用;

3)pageContext是JSP中的最重要的一个内置对象,可以通过pageContext获取其他域对象的应用,同时它是一个域对象,作用范围只针对当前页面,当前页面结束时,pageContext销毁, 生命周期是JSP四个域对象中最小的。

15、拦截器的生命周期与工作过程?
答:

1)每个拦截器都是实现了Interceptor接口的 Java 类;

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

3)intercept(ActionInvocation invocation): 每拦截一个动作请求, 该方法就会被调用一次;

4)destroy: 该方法将在拦截器被销毁之前被调用, 它在拦截器的生命周期内也只被调用一次;

5)struts2中有内置了18个拦截器。

16、用自己的话简要阐述struts2的执行流程。
答: Struts 2框架本身大致可以分为3个部分:核心控制器FilterDispatcher、业务控制器Action和用户实现的企业业务逻辑组件。 1)核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制。

2)业务控制器Action和业务逻辑组件是需要用户来自己实现的。用户在开发Action和业务逻辑组件的同时,还需要编写相关的配置文件,供核心控制器FilterDispatcher来使用。

Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是WebWork的升级版本。

基本简要流程如下:

1)客户端浏览器发出HTTP请求。

2)根据web.xml配置,该请求被FilterDispatcher接收。

3)根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。

4)Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。

5)Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。

原文:https://blog.csdn.net/wchengsheng/article/details/79930457

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值