本帖最后由 张11。。。 于 2019-5-14 16:15 编辑
SpringMVC 介绍
一、了解SpringMVC 大部分java应用都是web应用,展现层是web应用最为重要的部分,Spring为展现层提供了一个优秀的web框架—SpringMVC。和众多其他web框架一样,它基于MVC的设计理念,此外,它采用了松散耦合可插拔组件结构,比其他MVC框架更具扩展性和灵活性。 SpringMVC通过一套MVC注解,让POJO成为处理的处理器,无需实现任何接口,同事,SpringMVC还支持REST风格的URL请求。 此外,SpringMVC在数据绑定、试图解析、本地化处理及静态资源处理上都有许多不俗的表现。它在框架设计、扩展性、灵活性等方面全面超越了Struts、WebWork等MVC框架,从原来的追赶着一跃成为MVC的领跑者。 SpringMVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet是SpringMVC框架的总导演、总策划,它负责截获请求并将其分派给相应的处理器处 理。 二、了解MVC 1、 模型(Model):负责封装应用的状态,并实现应用的功能。通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而 业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。通常由java开发人员编写程序完成,代码量最多 2、 视图(View):视图通过控制器从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互。通常由前端和java开发人员成,代码量较多。 3、 控制器(Controller):用来控制应用程序的流程和处理用户所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型 来实现用户请求的功能;然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。起到总调度的作用,Controller通常由框架实现,使用时基本不需要编写代码
三、Springmvc架构 1. 用户发送请求到DispatcherServlet 控制器 2. DispatcherServlet控制器根据请求路径到HandlerMapping映射器查询具体的handler处理器 3. HandlerMapping映射器根据用户请求查找与之对应的HandlerExecutionChain执行链再回传给DispatcherServlet控制器 4. DispatcherServlet控制器根据handler具体的实现方式调用HandlerAdapter适配器 5.HandlerAdapter适配器调用具体的handler处理器处理业务并返回ModelAndView到DispatcherServlet控制器 6. DispatcherServlet控制器将ModelAndView专递到ViewResolver视图解析器 7.ViewResolver视图解析器 返回具体的视图到DispatcherServlet控制器 8. DispatcherServlet控制器渲染视图后响应给用户
四、Springmvc常用注解: @Controller 负责注册一个bean 到spring 上下文中
@RequestMapping 注解为控制器指定可以处理哪些 URL 请求
@RequestBody 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上 @ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区 @ModelAttribute 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法 在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方 法 入参对象添 加到模型中 @RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法 @PathVariable 绑定 URL 占位符到入参
@ExceptionHandler 注解到方法上,出现异常时会执行该方法
@ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常
五、Springmvc与Struts2的区别
1、springmvc基于方法开发的,struts2基于类开发的。springmvc将url和controller里的方法映射。映射成功后springmvc生成一个Handler对象,对像中只包括了一个method。方法执行结束,形参数据销毁。springmvc的controller开发类似web service开发。
2、springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。
3、经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。
|