您的位置:首页 > 编程语言 > Java开发

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

2018-09-17 14:39 447 查看

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)

<bean id="managerDao" class="com.xalo.daoImpl.ManagerDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="manager" ref="manager"></property>
</bean>
<bean id="managerService" class="com.xalo.serviceImpl.ManagerServiceImpl">
<property name="managerDao" ref="managerDao"></property>
</bean>
<!-- action的配置,action是多例模式,需要将scope设置为原型模式 依赖service层的bean -->
<bean id="managerAction" class="com.xalo.action.ManagerAction" scope="prototype">
<!--name为依赖注入的变量名  -->
<property name="managerService" ref="managerService"></property>
</bean>

<!-- 将class改成Spring配置文件中的bean的id,将spring交给struts.xml进行管理 -->
<package name="Manager" extends="json-default" namespace="/manager">
<!--增加员工 -->
<action name="addManager" class="managerAction" method="addManager">
<result name="success" type="json">
<param name="root">result</param>
</result>
</action>
</package>

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

@Controller
public class TeacherController {
@Autowired
private TeacherService teacherService;
@RequestMapping(value="/addTeacher",method={RequestMethod.POST})
@ResponseBody    //接收前端传送过来的json数据
public String addTeacher(Teacher teacher){
System.out.println(teacher);
teacherService.addTeacher(teacher);
return "success";
}
}

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

public class ManagerAction extends ActionSupport {
//接收前端传递过来的参数,参数是可以让多个方法共享的
private Manager manager;
//返回给前端结果
private HashMap<String, Object> result;
//setter依赖注入ManagerServiceImpl对象
private ManagerServiceInter managerService;

public void setManagerService(ManagerServiceInter managerService) {
this.managerService = managerService;
}
//给接收和返回数据提供setter和getter方法

// 增加员工
public String addManager() {
result = managerService.addManager(manager);
System.out.println(result);
return SUCCESS;
}
}

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

<!--ModelMap
既可以使用map形式添加数据,也可以使用Model形式添加数据
添加数据 mm.addAttribute(“属性名”, “属性值”)-->

<!--方法的参数为Map类型
设置返回给前端的数据:map.put(key, value)将要返回给界面的数据添加到map即可
当前方法的返回值,是视图逻辑名称-->
<!--(1)FirstController.java-->
@Controller   <!--将当前实体交给spring进行管理-->
@RequestMaping("/fc")  <!--修饰类-->
public class FirstController {
@RequestMapping("/tm")
public String testMap(Map<String, Object> map) {
map.put("money",1000);
return "hello";
}
}
<!--(2)hello.jsp-->
<h1>Map</h1>
<h1>${requestScope.money}</h1>
<!--(3)index.jsp-->
<a href = "fc/tm">Map测试</a>

<!--Model
和Map一样,只是添加数据model.addAttribute(“属性名”,”属性值”)-->
<!--(1)FirstController.java-->
@Controller  <!--将当前实体交给spring进行管理-->
@RequestMapping("/fc")  <!--修饰类-->
public class FirstController {
@RequestMapping("/tmo")
public String testModel(Model model) {
model.addAttribute("aa","我是aa")
return "hello"
}
}
<!--(2)hello.jsp-->
<h1>Model</h1>
<h1>${requestScope.aa}</h1>
<!--(3)index.jsp-->
<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对运行时的项目进行监控

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: