`
ekinsa1
  • 浏览: 3054 次
  • 来自: 重庆
社区版块
存档分类
最新评论

springmvc和struts2的区别相关内容

 
阅读更多
网上百度 所做记录。

1、spring mvc的入口是servlet,而struts2是filter

filter功能:用户可以改变一个request和修改一个response

Filter 不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response.换种说法,filter其实是一个”servlet chaining”(servlet 链).

一个filter 包括:

  1. 在servlet被调用之前截获;

  2. 在servlet被调用之前检查servlet request;

  3. 根据需要修改request头和request数据;

  4. 根据需要修改response头和response数据;

  5. 在servlet被调用之后截获.

通常我们所访问的资源是一个servlet或jsp页面,而jsp其实是一个被封装了的servlet(每个jsp执行前都会被转化为一个标准的servlet,这点若还有不明白的请自己到网上查一下吧),于是我们就可以统一地认为我们每次访问的都是一个Servlet,而每当我们访问一个servlet时,web容器都会调用该Servlet的service方法去处理请求。而在service方法又会根据请求方式的不同(Get/Post)去调用相应的doGet()或doPost()方法,实际处理请求的就是这个doGet或doPost方法。写过servlet的朋友都应该知道,我们在doGet(或doPost)方法中是通过response.getWriter()得到客户端的输出流对象,然后用此对象对客户进行响应。

       到这里我们就应该理解了过滤器的执行流程了:执行第一个过滤器的chain.doFilter()之前的代码——>第二个过滤器的chain.doFilter()之前的代码——>……——>第n个过滤器的chain.doFilter()之前的代码——>所请求servlet的service()方法中的代码——>所请求servlet的doGet()或doPost()方法中的代码——>第n个过滤器的chain.doFilter()之后的代码——>……——>第二个过滤器的chain.doFilter()之后的代码——>第一个过滤器的chain.doFilter()之后的代码。

1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。
2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

过滤器是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的 action进行业务逻辑,
比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),
或者在传入servlet或者 struts的action前统一设置字符集,
或者去除掉一些非法字符(聊天室经常用到的,一些骂人的话)。。。

拦截器 可通过的是符合条件的action。 拦截器本身是一个普通的Java对象,它能动态拦截Action调用,
Action执行前后执行拦截器本身提供的各种个样的Web项目需求。也可以阻止Action的执行,同时也可以提取
Action中可以复用的部分。



Advice
  +-- AfterAdvice
    +-- AfterReturningAdvice
    +-- ThrowsAdvice
  +-- BeforeAdvice
    +-- MethodBeforeAdvice
  +-- Interceptor
    +-- MethodInterceptor

上面是spring代码中Advice继承层次的一个部分快照。从这个就可以看出Interceptor和Advice的关系。Advice是AOP编程中某一个方面(Aspect)在某个连接点(JoinPoint)所执行的特定动作,这个连接点(JoinPoint)可以是自定义的;而Spring中的Interceptor更多关注程序运行时某些特定连接点(属性访问,对象构造,方法调用)时的动作。确切的说,Interceptor的范围更窄一些


2. 性能:spring会稍微比struts快。spring mvc是基于方法的设计,而sturts是基于类

3. 参数传递:struts是在接受参数的时候,可以用属性来接受参数,这就说明参数是让多个方法共享的。


4. 设计思想上:struts更加符合oop的编程思想, spring就比较谨慎,在servlet上扩展。

5. intercepter的实现机制:struts有以自己的interceptor机制,spring mvc用的是独立的AOP方式。

6. 另外,spring3 mvc的验证也是一个亮点,支持JSR303,处理ajax的请求更是方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可。
分享到:
评论

相关推荐

    springmvc、struts2区别、mybatis、hibernate区别

    struts2介绍、和springmvc对比,mybatis介绍和hibernate对比

    SpringMVC与struts的区别

    SpringMVC与Struts的区别 SpringMVC是一款优秀的MVC框架,由于其发布3.0版本后,现在有越来越多的团队选择了Spring3 MVC作为MVC的框架。SpringMVC结构简单,灵活性较高,性能也很优秀。下面我们将详细讲解SpringMVC...

    SpringMVC与struts2比较

    SpringMVC与struts2比较及技术特点

    SSM-SpringMVC-Struts2基础框架

    SSM-SpringMVC-Struts2基础框架

    简单了解SpringMVC与Struts2的区别

    SpringMVC和Struts2都是流行的Java Web框架,但它们之间存在着许多区别。下面我们将对比SpringMVC和Struts2的主要区别,帮助开发者更好地选择合适的框架。 首先,Struts2是类级别的拦截,而SpringMVC是方法级别的...

    springMVC+struts+hibernate

    Spring MVC、Struts和Hibernate是Java Web开发中的三个重要框架,它们各自负责应用程序的不同层面,协同工作以构建高效的企业级应用。Spring MVC是Spring框架的一部分,主要处理HTTP请求和响应,提供模型-视图-控制...

    Java面试题51.SpringMVC和Struts2的不同.mp4

    Java面试题51.SpringMVC和Struts2的不同.mp4

    springmvc-struts

    可以构建一个功能强大的Java Web应用,通过SpringMVC处理请求,Struts(尤其是Struts2)提供额外的MVC功能,MyBatis作为数据访问层处理数据库操作,而JUnit则帮助进行单元测试,确保整个系统的稳定性和正确性。...

    springmvc+struts+mybatis项目学习

    在实际项目中,这三者可能会有以下的协作流程:用户发送请求,DispatcherServlet接收到请求后,根据配置找到对应的Struts2 Action或者Spring MVC Controller来处理。Controller/Action处理业务逻辑,并通过MyBatis...

    Struts2和SpringMvc区别.md

    Struts2和SpringMvc区别.md

    Spring4,SpringMVC,Struts,Hibernate,Maven,Mybatis学习资料

    Struts2是其最新版本,采用Model-View-Controller设计模式,提供了一套完整的解决方案,包括Action、Interceptor、Result等概念,使得开发者可以更方便地处理请求和响应。 4. Hibernate:Hibernate是一个对象关系...

    springmvc基础.docx

    springmvc基础 包含代码+知识点+详细解释 1. 什么是springmvc? 2. springmvc框架原理 前端控制器、处理器映射器、处理器适配器、视图解析器 3. springmvc入门程序 目的:对前端控制器、...6. springmvc和struts2区别

    maven+(springmvc,mybatis,struts2,hibernate)两两整合

    整合Struts2与MyBatis或Hibernate时,Struts2的动作类(Action)接收请求并调用Service层,Service层再通过MyBatis或Hibernate操作数据库。 整合步骤通常包括以下部分: - 配置POM.xml文件:添加所需框架的依赖。 -...

    Java Web框架例子合集(spring,springmvc,mybatis,struts2,hibernate)

    本合集包含了一些最流行的框架实例:Spring、SpringMVC、MyBatis、Struts2以及Hibernate。以下是对这些框架的详细介绍: 1. **Spring**: Spring 是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程...

    51.SpringMVC和Struts2的不同(比较重要).avi

    java面试宝典

    springmvc与strtus2的区别

    SpringMVC和Struts2是两个非常著名的Java Web框架,它们在处理Web应用程序时有着各自的特点和优势。这里我们将深入探讨这两个框架之间的主要区别。 首先,SpringMVC是Spring框架的一部分,强调的是轻量级、模块化和...

    Hibernate.mybatis.springMVC.struts2.spring

    本资源包含五个主流的Java Web框架的最新版本:Hibernate 5.3.1、MyBatis 3.4.6、Spring Framework 5.0.7、Struts2 2.5.16。下面将分别介绍这些框架的核心功能和使用方法。 **1. Hibernate 5.3.1** Hibernate 是一...

    一头扎进SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】

    SpringMVC MyBatis Struts Spring Hibernate全套教学视频【4.3G】 网盘下载地址 【付费下载之后的用户,可留言获取更多下载资源】

    struts1原理,struts2原理,spring mvc原理,struts1和struts2,struts和spring mvc

    Struts、Spring MVC和Struts2是Java Web开发中三个重要的MVC框架,它们都用于构建基于模型-视图-控制器(MVC)设计模式的Web应用程序。下面将分别介绍这三个框架的工作原理,并进行对比。 **Struts1原理:** Struts...

    springmvc+mybatis面试题

    【SpringMVC与Struts2的区别】 1. 入口不同:SpringMVC的入口是DispatcherServlet(前端控制器),而Struts2的入口是Filter(过滤器)。 2. 开发方式:SpringMVC基于方法开发,参数通过方法形参传递;Struts2基于类...

Global site tag (gtag.js) - Google Analytics