JSF/SpringMVC/Struts2区别与比较

SpringMVCStruts2区别与比较总结

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上SpringMVC就容易实现restful url,而struts2的架构实现起来要费劲,因为Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了。

 

2、由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法之间也是独立的,但其所有Action变量是共享的,这不会影响程序运行,却给我们编码 读程序时带来麻烦,每次来了请求就创建一个Action,一个Action对象对应一个request上下文。

3、由于Struts2需要针对每个request进行封装,把request,session等servlet生命周期的变量封装成一个一个Map,供给每个Action使用,并保证线程安全,所以在原则上,是比较耗费内存的。

4、 拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。

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

6、SpringMVC集成了Ajax,使用非常方便,只需一个注解@ResponseBody就可以实现,然后直接返回响应文本即可,而Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便。

7、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。

8、Spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高(当然Struts2也可以通过不同的目录结构和相关配置做到SpringMVC一样的效果,但是需要xml配置的地方不少)。

9、 设计思想上,Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。

 

10、SpringMVC开发效率和性能高于Struts2。

11、SpringMVC可以认为已经100%零配置。
 

JSF与Strut2的异同

JSF:组件式,开发组件,然后基于组件的事件响应。更容易写复杂的交互式页面,更适合webapp,如大量的表单
等,如财务软件包。
Struts:Action动作式, 以HTTP请求、响应为基础,更容易bookmark,更适合website(以只读内容发布为主,如博客,新闻等)。
首先事件是指从客户端页面(浏览器)由用户操作触发的事件,Struts使用Action来接受浏览器表单提交的事件,这里使用了Command模式,每个继承Action的子类都必须实现一个方法execute。
正如Struts的struts-config.xml一样,JSF也有类似的faces-config.xml配置文件:
在Struts-config.xml中有ActionForm Action以及Jsp之间的流程关系,在faces-config.xml中,也有这样的流程,
managed-bean类似Struts的ActionForm,正如可以在struts-config.xml中定义ActionForm的scope一样,这里也定义了managed-bean的scope为session。
但是如果你只以为JSF的managed-bean就这点功能就错了,JSF融入了新的Ioc模式/依赖性注射等技术。
JSF和Struts一样,除了JavaBeans类之外,还有页面表现元素,都是是使用标签完成的,Struts也提供了struts-faces.tld标签库向JSF过渡。
����

转载于:https://www.cnblogs.com/wzj4858/p/8206627.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSFJavaServer Faces)和Spring MVC 是两种常用的Java Web应用程序框架,它们都基于MVC(Model-View-Controller)设计模式,但有一些区别。 下面是JSF和Spring MVC的一些主要区别: 1. 技术栈:JSFJava EE(现在是Jakarta EE)规范的一部分,它是在Java EE容器中运行的。而Spring MVC是Spring Framework的一部分,它可以独立于Java EE容器运行。 2. 组件化 vs 注解驱动:JSF采用组件化编程模型,提供了丰富的UI组件库,并使用XML配置来定义页面和组件之间的关系。而Spring MVC则更加注重注解驱动的开发风格,通过注解将请求映射到处理方法,并使用模板引擎来渲染视图。 3. 配置方式:JSF通常使用XML配置文件定义页面、组件和导航规则等信息,这些配置文件位于WEB-INF目录下。而Spring MVC通过注解和配置类来定义请求映射、视图解析器、拦截器等配置信息,通常不需要使用XML配置文件。 4. 依赖注入:Spring MVC是Spring Framework的一部分,因此天然支持依赖注入(DI)和控制反转(IoC)。开发人员可以使用Spring的DI机制来管理和注入组件、服务和其他依赖项。而JSF并没有内置的依赖注入机制,但可以与其他框架(如Spring)集成来实现依赖注入。 5. 社区和生态系统:Spring MVC拥有庞大的开发者社区和丰富的生态系统,提供了大量的第三方库和工具支持。而JSF的社区相对较小,但仍然有一些活跃的开发者和项目。 选择使用JSF还是Spring MVC取决于你的需求、项目规模和个人偏好。如果你需要一个在Java EE容器中运行的框架,并且更喜欢组件化编程模型,那么JSF可能更适合你。如果你更倾向于注解驱动的开发风格、灵活的配置方式以及强大的依赖注入功能,那么Spring MVC可能更适合你。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值