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对运行时的项目进行监控
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10706.html