http://blog.csdn.net/ya2dan/article/details/7395458

SpringMVC和Struts2比较   

 1. 入口

 spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),
 这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。

 2、主要机制

 springmvc是方法级别的拦截,一个方法对应一个request上下文,
 而方法同时又跟一个url对应,参数的传递是直接注入到方法中的,是该方法独有的。

 struts2是类级别的拦截, 一个类对应一个request上下文, struts是在接受参数的时候,可以用属性来接受参数,
 这就说明参数是让多个方法共享的,这也就无法用注解或其他方式标识其所属方法了

 intercepter的实现机制。struts有以自己的interceptor机制,spring mvc 用的是独立的AOP方式。
 这样导致struts的配置文件量还是比spring mvc大,虽然struts的配置能继承,spring mvc使用更加简洁。

 3、SpringMVC对ajax的支持上要优于struts2。


 struts2框架性能很好, 但struts2的标签性能太差了。 要避免使用 struts2标签。
 
 Struts2 由于采用了 值栈、OGNL表达式、struts2标签库等,会导致性能下降,
 很严重的下降。如果避免或减少使用这些,性能还是很好的。
 
 Struts2的 多层拦截器、 多实例action性能都很好,并不是 导致性能问题的原因。


Filter与Servlet的区别和联系


 

Filter

Servlet

接口

实现Filter接口

实现Servlet接口

使用步骤

1、创建类,继承接口

2、实现方法

init()

doFilter()

destroy()

 


3、配置WEB-INF/web.xml

1、创建类,继承接口

2、实现方法

init()

service()

destroy()

getServletConfig()

getServletInfo()

3、配置WEB-INF/web.xml

初始化时间

Servlet容器启动之后即初始化

Servlet类被调用之后初始化、先于Filter调用。

初始化可以在容器启动后被调用但需要配置。

调用顺序

1. 按照web.xml中的映射配置顺序按照配置条件从后向前调用

2. 层次调用doFilter()方法中FilterChain.doFilter()之前的内容

3. 调用Servlet中的service()方法

4. service方法执行完毕后,层次调用doFilter()中FilterChain.doFilter()之后的方法,顺序与之前的相反

 

按照web.xml中的映射配置顺序按照配置条件从后向前调用第一个满足条件的Servlet,调用之前事先执行满足条件的Filter,不存在层次调用Servlet问题

销毁

服务器停止后销毁,晚于Servlet销毁之后

服务器停止后销毁

作用

1. 在HttpServletRequest到达Servlet之前,拦截客户的HttpServletRequest。

2. 根据需要检查HttpServletRequest,也可以修改HttpServletRequest头和数据。

3. 在HttpServletResponse到达客户端之前,拦截HttpServletResponse。

4. 根据需要检查HttpServletResponse,也可以修改HttpServletResponse头和数据。

主要是处理客户端的请求并将其结果发送到客户端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值