Java面试经常会问到struts2和springmvc的区别,下面详解struts2和springmvc的区别@mikechen
struts2
Struts2是一个基于MVC设计模式的Web应用框架,用于创建企业级Java web应用程序,本质是一个大大的Servlet。
Struts2框架的主要组件包括:
Interceptor(拦截器):在请求的处理过程中,Interceptor可以拦截请求并进行相应的处理,比如权限控制、日志记录、数据验证等。
Action:在Struts2中,Action是一个处理请求的核心组件,它负责处理来自浏览器的请求并将处理结果返回给浏览器。
Result:在Struts2中,Action返回一个Result实例,它指示了如何将Action的处理结果呈现给用户,可以是JSP、Velocity、Freemarker等模板引擎。
springmvc
Spring MVC是一个MVC框架,用于构建Web应用程序。
如下所示:
1.模型(Model):模型封装了数据及对数据的操作,可以直接对数据库进行访问。
2.视图(View):只负责展示,没有具体的程序逻辑。
3.控制器(Controller):用于控制程序的流程,将模型中的数据展示到视图中。
struts2和springmvc的区别
Struts2和Spring MVC都是MVC模式的Web框架,它们的主要区别如下:
1.架构设计不同
Struts2是基于Filter和Servlet的Web框架,它的核心控制器Action实现了WebWork和Struts1的功能。
而Spring MVC是基于Spring框架的Web框架,它的核心控制器DispatcherServlet是Spring MVC的核心组件,通过HandlerMapping和HandlerAdapter将请求映射到Controller上。
2.配置方式不同
Struts2需要使用XML文件进行配置,如struts.xml和web.xml等,配置比较繁琐。而Spring MVC使用注解或XML文件进行配置,可以根据需要选择。
3.数据绑定方式不同
Struts2使用OGNL表达式实现数据绑定,开发人员可以将请求参数自动绑定到Action的属性上,也可以手动进行数据绑定。而Spring MVC使用Spring表达式语言SpEL实现数据绑定,也支持使用DataBinder进行数据绑定。
4.Interceptor和Interceptor Chain不同
Struts2使用Interceptor来实现对请求的拦截和处理,Interceptors可以对Action的执行进行拦截、处理和转发,比如登录拦截、权限控制等。而Spring MVC使用Interceptor和Interceptor Chain来实现类似的功能,但Interceptor可以在HandlerAdapter之前或之后执行,比如日志记录、权限控制等。
5.处理RESTful接口不同
Struts2不支持处理RESTful接口,需要手动进行URL映射和参数解析。而Spring MVC支持处理RESTful接口,可以使用@RequestMapping注解进行URL映射和参数解析。
总之,Struts2和Spring MVC都是成熟的MVC模式的Web框架,各有优缺点,选择哪种框架取决于实际需要和个人偏好。
以上就是struts2和springmvc的区别详解,更多请查看:Struts2框架最全详解(非常详细)和SpringMVC教程(万字图文全面详解)
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》