5.2 springMVC常识!

参考 https://blog.csdn.net/qq_40775293/article/details/95362788

  SpringMVC是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合 (2)SpringMVC的工作原理:   (1) 客户端发送请求到DispatcherServlet   (2)DispatcherServlet查询HandlerMapping找到处理请求的Controller   (3)Controller调用业务逻辑后,返回ModelAndView   (4)DispatcherServlet查询ModelAndView,找到指定视图.   (5)视图将结果返回到客户端    (3)SpringMVC执行流程: DispatcherServlet继承了HttpServlet   (1)用户向服务器发送请求,请求被Spring前端控制器Servelt.DispatcherServlet捕获 ,     (2)DispatcherServlet对请求URL进行解析,得到请求资源标识符URI.根据该URI,              调用HandlerMapping(处理器映射器),     (3)HanderMapping获得该Hander配置的所有相关对象(Hander对象和Hander对象对应的拦截器),              最后以HandlerExecutionChain对象的形式返回给DispatcherServlet.     (4)DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter(处理适配器),     (5)HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器).              Controller执行完成返回ModelAndView.   HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet.    (6)根据返回的ModelAndView,选择一个合适的ViewResolver(视图解析器),返回给DispatcherServlet.    (7)DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)     (8)DispatcherServlet响应用户。 5.2 springMVC常识!  

SpringMvc的控制器 默认是单例模式 所以

1. 多线程访问的时候有线程安全问题,不要用同步,会影响性能 2.控制器类@Controller类中 不能写成员变量   为什么使用单例模式? ①性能 (不用每次请求都创建对象) ②不需要多例(不要在控制器类中定义成员变量) SpringMvc 中控制器的注解用@Controller:该注解表明该类扮演控制器的角色 @RequestMapping 注解用在类上或方法上的作用: 用来映射一个URL到一个类或者一个特定的处理方法 前台多个参数,这些参数都是一个对象,后台方法如何快速得到对象参数? 直接在后台方法中声明这个对象,SpringMvc就自动把属性赋值到这个对象里面,注意要用@RequestBody @RequestMapping(value = "query2",method = RequestMethod.POST) public String query(@RequestBody JSONObject jsonObject){.....} 或者: @RequestMapping(value = "query3",method = RequestMethod.POST) public String query(@RequestBody UserEntity userEntity){.....} struts2和 SpringMvc的区别 入口不同: Struts2:filter过滤器 SpringMvc:一个Servlet 即前端控制器,具体就是DispatcherServlet 开发方式不同: Struts2:基于类开发,传递参数通过类的属性,只能设置为多例 SpringMvc:基于方法开发(一个url对应一个方法),请求参数传递到方法形参,可以为单例也可以为多例(建议单例)    
上一篇:SpringMVC执行原理你都不知道?


下一篇:SpringMVC02:初识SpringMVC