struts2和spring mvc的区别
在项目中使用struts2和spring mvc为了实现后台的业务代码和前台数据之间的传递,现在基本上不会有用struts2的了,几次面试问的最多的关于struts2的问题就是struts2和spring mvc之间的区别,其中关于使用配置文件和注解的问题就回答错误了。
- struts2也是可以使用注解的,但是struts2相比于spring mvc不能实现真正的零配置,struts2在使用注解的时候还是需要用struts.xml一小段配置。而spring mvc可以实现真正的零配置实用注解。详见:struts2基于注解配置action
- 这两个框架都是需要对数据进行拦截,但是struts2是类级别的拦截,一个类对应一个request上下文,struts2是基于类设计,每次请求都会实例一个Action,每个Action都会被注入属性,而spring mvc是方法级别的拦截,说这个可能有些不理解,大部分文章这么说完之后没有进一步解释,拿具体配置说明一下会更好理解
下面是struts2的配置文件(一部分),每次都是根据配置去找对应的Action,struts2是通过类的成员变量接收数据,在多线程的环境下,这些变量是共享的。
<package name="user" namespace="/user" extends="struts-default">
<action name="login" class="com.struts2.action.UserAction"
method="login">
<result name="a">/Success.jsp</result>
<result name="b">/login.jsp</result>
</action>
</package>
接下来是spring mvc使用注解完成的功能,spring mvc处理的时候根据RequestMapping找对应的url,和struts2相比,spring mvc对于数据比较安全,每个方法之间都是通过形参传递数据,方法结束,形参结束生命被销毁。
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("add")
public String add(User user) {
return "add";
}
}
- 在拦截机制上struts2和spring mvc是两种完全不同的方式,struts2采用的是类似于链式堆栈结构的拦截(责任链模式),需要在配置文件中配置拦截器。每一个Action请求都包含在一系列拦截器的内部。
spring mvc采用的是AOP思想,可以实现预处理(实现处理器的预处理(如登录检查)),后处理(实现处理器的后处理(但在渲染视图之前)),整个请求处理完毕回调方法,即在视图渲染完毕时回调
- 在设计思路上,spring mvc更加的处理流程更加规范,每个处理流程划分为很多的步骤,每个处理步骤都交给不同的组件进行处理,struts2就显得比spring mvc乱。
- spring mvc和spring都是一家的可能在一起使用更加方便。
struts2和spring mvc的区别的更多相关文章
- [Java语言] 《struts2和spring MVC》的区别_动力节点
1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...
- cpj-swagger分别整合struts2、spring mvc、servlet
cpj-swagger 原文地址:https://github.com/3cpj/swagger 1. Swagger是什么? 官方说法:Swagger是一个规范和完整的框架,用于生成.描述.调用和可 ...
- Struts2和Spring MVC 区别 今天面试被问到了
虽然说没有系统的学习过Spring MVC框架, 但是工作这么长时间, 基本上在WEB层使用的都是Spring MVC, 自己觉得Struts2也是一个不错的WEB层框架, 这两种框架至今自己还未有比 ...
- struts2与spring mvc 的比较
1.传值: struts2通过set get来传值,而spring mvc 可以直接在方法里传值(String username,Model model)model也可以换成map来传值但不建义 mo ...
- struts2和spring mvc的比较
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt236 Struts2 Springmvc 机制 基于filt ...
- 【转】Struts2 和 Spring MVC对比
1. 实现机制 struts2框架是类级别的拦截,每次来了请求就创建一个controller中对应的Action,然后调用setter getter方法把request中的数据注入 .struts2实 ...
- 控制层技术:Servlet+reflection、Struts2、Spring MVC三者之间的比较学习
Servlet Struts2 Spring MVC 处理用户提交的数据 基于MVC设计模式的Web应用程序 是一个框架 是MVC框架 导入servlet包,配置web.xml文件 web.xml & ...
- spring boot与spring mvc的区别
Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等.但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面 ...
- Spring、Spring Boot、Spring Frame、Spring MVC的区别
Spring框架就像一个厂商,其下有很多产品,如Spring Boot.Spring Frame.Spring Cloud等等. Spring Boot用于快速.方便.简单的搭建一个Spring项目. ...
随机推荐
- Oracle安装、Navicat for Oracle、JDBCl连接、获取表结构
Oracle安装 Navicat for Oracle配置 Oracle JDBC连接(增删改查) Oracle安装 环境windows 7 64位 安装版本:oracle 11g(64位) 下载地址 ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- SpringMVC的常用注解
在SpringMVC中常用的注解主要都是用于Controller上,所以下面的四大不同类型的注解都是根据它们处理的request的不同内容部分来区分的: 处理requ ...
- 3_使用指针对象(Using Object Pointer)
类的成员函数有两种调用方式,一种是由对象调用,另一种是由对象指针调用.其中,对象调用的方式为objectName.memberFunctionName(parameters),而对象指针调用的方式为o ...
- Linux SendMail发送邮件失败诊断案例(四)
最近又碰到一起Linux下SendMail发送邮件失败的案例,邮件发送后,邮箱收不到具体邮件, 查看日志/var/log/maillog 发现有"DSN: User unknown" ...
- VC6安装错误——Error Launching acmboot.exe
因项目需要,我需要安装Microsoft Visual C++ Professional Version 6 SP5.但是在安装时运行安装目录下的setup.exe,出现Error Launching ...
- Ubuntu 上查看硬件信息命令
1.Mint 驱动程序管理器是由 Linux Mint 团队开发的一款系统工具软件,使得用户在Linux系统中可容易安装专有驱动,通过一个直观的界面.由于 Mint 驱动程序管理器具有独立性,它支持所 ...
- bootstrap 幻灯大图结合dedecms的autoindex
<div class="container" id="banner"> <div id="carousel-example-gene ...
- freemarker处理哈希表的内建函数
freemarker处理哈希表的内建函数 1.简易说明 (1)map取值 (2)key取值 2.实现示例 <html> <head> <meta http-equiv=& ...
- Caused by: java.sql.SQLException: Operand should contain 1 column(s)
1.错误描述 [ERROR:]2015-05-05 15:48:55,847 [异常拦截] org.hibernate.exception.DataException: error executing ...