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

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对运行时的项目进行监控

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值