Struts2

来源:互联网 发布:炒菜致癌知乎 编辑:程序博客网 时间:2024/06/06 19:53

Struts2

1. 为什么每次请求都要创建一个Action对象?

是出于对线程安全的考虑,每次请求的时候都会创建一个action的实例,这样会保证线程的安全。Struts1只是在第一次请求的时候创建一个action的实例,以后每次相同的请求都直接从内存中去读取,它是单例模式,多线程情况下不安全。

 

2. Struts2是如何实现MVC设计模式的?

准确的说Struts2集中体现在VC两层,然而Model层应该是有如Spring、JavaBean等具体实现的。当用户发送request请求首先经过拦截器,至核心控制器查找Action并转发,这一部分可以叫做控制器层,由拦截器、核心控制器实现,然后由业务控制器Action处理或调用底层Model处理请求,这一部分可以叫做业务层,由具体用户业务逻辑实现,最后处理完毕后,返回结果页面逻辑路径,生成Result对象,根据配置的模版技术生成用户响应,这一部分可以叫做View层,由各模版技术支持实现,包括:Jsp、Freemarker、Velocity等。

 

3. Struts2 拦截器和过滤器的区别
a.Servlet容器
过滤器依赖于Servlet容器,而拦截器不依赖于Servlet容器。
b.Action 请求
Struts2 拦截器只能对 Action 请求起作用,而过滤器则可以对几乎所有请求起作用。
c.Action 上下文
拦截器可以访问 Action 上下文(ActionContext)、值栈里的对象(ValueStack),而过滤器不能.
d.生命周期
在 Action 的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

 

4. 为什么要使用 Struts2 & Struts2 的优点
a. 基于 MVC 架构,框架结构清晰。
b. 使用 OGNL: OGNL 可以快捷的访问值栈中的数据、调用值栈中对象的方法
c. 拦截器: Struts2 的拦截器是一个 Action 级别的 AOP, Struts2 中的许多特性都是通过拦截器来实现的, 例如异常处理,文件上传,验证等。拦截器是可配置与重用的
d. 多种表现层技术. 如:JSP、FreeMarker、Velocity 等

0 0