Struts2 面试题
时间: 2023-08-04 13:09:05 浏览: 275
Struts2面试题包括以下内容:
1. SpringMVC与Struts2的主要区别。
2. Struts2中如何访问HttpServletRequest、HttpSession和ServletContext三个域对象?
3. Struts2中的拦截器有什么用途?
4. Struts2中的默认包struts-default有什么作用?
5. Struts2中,Action并没有直接收到用户的请求,那它为什么可以处理用户的请求?又凭什么知道一个请求到底交给哪一个Action来处理?
6. Struts2中,Action通过什么方式获取用户从页面输入的数据,又是通过什么方法把数据传给视图层显示的?
7. struts2的执行流程。
8. 具有相同名称的一组值,struts2如何实现封装?
9. 简述struts2值栈的原理和生命周期?
10. 简述Struts2异常处理机制?
11. 谈一下你的项目选择Struts2的理由?
12. 阐述Struts2中的Action如何编写,是否采用单例?[1]
Struts2是一个经典的MVC框架,与Struts1相比,有以下区别:
1. 核心控制器改成了过滤器,比Servlet的级别要高。
2. Struts1要求业务类必须继承Action或dispatchAction,而Struts2只需要提供一个POJO类。
3. 绑定值到业务类时,Struts1是通过ActionForm,而Struts2是通过模型或属性驱动直接绑定到Action属性。
4. Struts1严重依赖于Servlet的API,而Struts2则脱离了Servlet的API。
5. 管理Action时,Struts1是单例模式,而Struts2是每个请求产生一个实例。
6. 在表达式的支持上,Struts2不仅有JSTL,还有功能更加强大的OGNL表达式。
7. Struts1的类型转换是单向的,而Struts2是双向的。
8. Struts2提供了拦截器,可以在访问Action之前或之后增加如权限拦截等功能。
9. Struts2提供了国际化资源文件管理实现。
10. Struts2支持多种视图类型,如JSP、Freemarker、Velocity等。[2]
在使用Struts2时,可能会遇到一些常见的问题,例如:
1. 表单重复提交的问题可以通过使用令牌机制来解决。
2. 国际化必须经过Action来实现。
3. 使用模型驱动时,可能会出现地址内存不一致的问题,可以通过对象拷贝来解决。
4. 在页面使用转发时可能会报404错误,可以通过过滤器改变请求地址来解决。
5. 在使用字符串时需要注意使用双引号而不是单引号。
6. 当校验出错时,需要跳转到相应的页面,可以使用通配符来解决。[3]
总结起来,Struts2面试题主要涉及Struts2与其他框架的区别、Struts2的核心概念和特性,以及在实际使用中可能遇到的问题和解决方法。
阅读全文