Struts2和SpringMVC主要区别 SpringMVC和SpringBoot的区别

拼搏现实的明天。 2022-05-12 10:40 311阅读 0赞

SpringMVC和MyBatis区别:
(1)SpringMVC和Struts2的加载机制不同
   Struts2和核心是基于一个Filter即StrutsPrepareAndExecuteFilter
   SpringMVC的核心是基于一个Servlet即DispatcherServlet(前端控制器)
  
(2)SpringMVC在性能上会稍微比struts2快
   Struts2是类级别的拦截,每次来了请求就创建一个Action,然后调用get和set方法把request中的数据注入
   Struts2中一个action对应一个request上下文,action是多例模式(singiton),需要将scope设置为原型模式(prototype)

  1. <bean id="managerDao" class="com.xalo.daoImpl.ManagerDaoImpl">
  2. <property name="sessionFactory" ref="sessionFactory"></property>
  3. <property name="manager" ref="manager"></property>
  4. </bean>
  5. <bean id="managerService" class="com.xalo.serviceImpl.ManagerServiceImpl">
  6. <property name="managerDao" ref="managerDao"></property>
  7. </bean>
  8. <!-- action的配置,action是多例模式,需要将scope设置为原型模式 依赖service层的bean -->
  9. <bean id="managerAction" class="com.xalo.action.ManagerAction" scope="prototype">
  10. <!--name为依赖注入的变量名 -->
  11. <property name="managerService" ref="managerService"></property>
  12. </bean>
  13. <!-- 将class改成Spring配置文件中的bean的id,将spring交给struts.xml进行管理 -->
  14. <package name="Manager" extends="json-default" namespace="/manager">
  15. <!--增加员工 -->
  16. <action name="addManager" class="managerAction" method="addManager">
  17. <result name="success" type="json">
  18. <param name="root">result</param>
  19. </result>
  20. </action>
  21. </package>

SpringMVC是方法级别的拦截,过滤后去Controller中找对应于@RequestMapping注解的url绑定的方法

  1. @Controller
  2. public class TeacherController {
  3. @Autowired
  4. private TeacherService teacherService;
  5. @RequestMapping(value="/addTeacher",method={RequestMethod.POST})
  6. @ResponseBody //接收前端传送过来的json数据
  7. public String addTeacher(Teacher teacher){
  8. System.out.println(teacher);
  9. teacherService.addTeacher(teacher);
  10. return "success";
  11. }
  12. }

(3)参数传递
   Struts在接收参数时,可以用成员属性来接收参数,参数是可以让多个方法共享的

  1. public class ManagerAction extends ActionSupport {
  2. //接收前端传递过来的参数,参数是可以让多个方法共享的
  3. private Manager manager;
  4. //返回给前端结果
  5. private HashMap<String, Object> result;
  6. //setter依赖注入ManagerServiceImpl对象
  7. private ManagerServiceInter managerService;
  8. public void setManagerService(ManagerServiceInter managerService) {
  9. this.managerService = managerService;
  10. }
  11. //给接收和返回数据提供setter和getter方法
  12. // 增加员工
  13. public String addManager() {
  14. result = managerService.addManager(manager);
  15. System.out.println(result);
  16. return SUCCESS;
  17. }
  18. }

SpringMVC的方法基本上是独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量

  1. <!--ModelMap
  2. 既可以使用map形式添加数据,也可以使用Model形式添加数据
  3. 添加数据 mm.addAttribute(“属性名”, “属性值”)-->
  4. <!--方法的参数为Map类型
  5. 设置返回给前端的数据:map.put(key, value)将要返回给界面的数据添加到map即可
  6. 当前方法的返回值,是视图逻辑名称-->
  7. <!--(1)FirstController.java-->
  8. @Controller <!--将当前实体交给spring进行管理-->
  9. @RequestMaping("/fc") <!--修饰类-->
  10. public class FirstController {
  11. @RequestMapping("/tm")
  12. public String testMap(Map<String, Object> map) {
  13. map.put("money",1000);
  14. return "hello";
  15. }
  16. }
  17. <!--(2)hello.jsp-->
  18. <h1>Map</h1>
  19. <h1>${requestScope.money}</h1>
  20. <!--(3)index.jsp-->
  21. <a href = "fc/tm">Map测试</a>
  22. <!--Model
  23. 和Map一样,只是添加数据model.addAttribute(“属性名”,”属性值”)-->
  24. <!--(1)FirstController.java-->
  25. @Controller <!--将当前实体交给spring进行管理-->
  26. @RequestMapping("/fc") <!--修饰类-->
  27. public class FirstController {
  28. @RequestMapping("/tmo")
  29. public String testModel(Model model) {
  30. model.addAttribute("aa","我是aa")
  31. return "hello"
  32. }
  33. }
  34. <!--(2)hello.jsp-->
  35. <h1>Model</h1>
  36. <h1>${requestScope.aa}</h1>
  37. <!--(3)index.jsp-->
  38. <a href = "fc/tmo">Model测试</a>

(4)Ajax交互
   spring mvc处理ajax的请求十分方便,只需一个注解@ResponseBody ,然后直接返回响应文本即可
   Struts2拦截器集成了Ajax,在Action中处理时一般必须安装插件或者自己写代码集成进去,使用起来也相对不方便;
(5)拦截机制的实现
   spring mvc用的是独立的AOP方式实现,而struts2有自己的interceptor机制,这样导致了struts2的配置文件量又比spring mvc大;
   
SpringBoot和SpringMVC的区别
1.SpringBoot是一个配置工具(快速开发整合包),SpringMVC是基于Spring的一个MVC框架
2.SpringBoot可以建立独立的Spring应用程序
3.内嵌了如Tomcat,Jetty和Undertow这样的容器,用不着再做部署工作
4.SpringBoot可以自动配置Spring,降低了项目塔键的复杂度
5.提供了POM文件可以就爱你华Maven配置
6.SpringBoot提供了基于Http,SSH,telnet对运行时的项目进行监控

发表评论

表情:
评论列表 (有 0 条评论,311人围观)

还没有评论,来说两句吧...

相关阅读