安徽省城乡建设厅网站,淘宝搜索排名,江苏省建设协会网站,百度推广一条资源多少钱一丶SpringMVC常用的组件
1.前端控制器DispatcherServlet 作用#xff1a;统一处理请求和响应。除此之外还是整个流程控制的中心#xff0c;由 DispatcherServlet 来调用其他组件#xff0c;处理用户的请求 接收请求#xff0c;响应结果#xff0c;相当于转发器#xff…一丶SpringMVC常用的组件
1.前端控制器DispatcherServlet 作用统一处理请求和响应。除此之外还是整个流程控制的中心由 DispatcherServlet 来调用其他组件处理用户的请求 接收请求响应结果相当于转发器中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。用户请求到达前端控制器它就相当于mvc模式中的cdispatcherServlet是整个流程控制的中心由它调用其它组件处理用户的请求dispatcherServlet的存在降低了组件之间的耦合性。 2.处理器映射器HandlerMapping 作用根据请求的url查找Handler(一般来讲是Controller)HandlerMapping负责根据用户请求找到Handler即处理器springmvc提供了不同的映射器实现不同的映射方式例如配置文件方式实现接口方式注解方式等。 3.处理器适配器HandlerAdapter 作用按照特定规则HandlerAdapter要求的规则去执行Handler通过HandlerAdapter对处理器进行执行这是适配器模式的应用编写Handler时按照HandlerAdapter的要求去做这样适配器才可以去正确执行Handler通过扩展适配器可以对更多类型的处理器进行执行。(根据映射器找到的处理器 Handler 信息按照特定的规则去执行相关的处理器 Handler) 4.处理器Handler(一般来讲是Controller) 作用Handler 是继DispatcherServlet前端控制器的后端控制器在DispatcherServlet的控制下Handler对具体的用户请求进行处理。由于Handler涉及到具体的用户业务请求所以一般情况需要工程师根据业务需求开发Handler。 5.视图解析器ViewResolver 作用进行视图解析根据逻辑视图名解析成真正的视图view ViewResolver负责将处理结果生成View视图ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址再生成View视图对象最后对View进行渲染将处理结果通过页面展示给用户。 二丶SpringMVC工作流程图 1.流程介绍
1. 用户通过浏览器发起 HttpRequest 请求到前端控制器 (DispatcherServlet)。2. DispatcherServlet 将用户请求发送给处理器映射器 (HandlerMapping)。3. 处理器映射器 (HandlerMapping)会根据请求找到负责处理该请求的处理器并将其封装为处理器执行链 返回 (HandlerExecutionChain) 给 DispatcherServlet4. DispatcherServlet 会根据 处理器执行链 中的处理器找到能够执行该处理器的处理器适配器(HandlerAdaptor) --注处理器适配器有多个5. 处理器适配器 (HandlerAdaptoer) 会调用对应的具体的 Controller6. Controller 将处理结果及要跳转的视图封装到一个对象 ModelAndView 中并将其返回给处理器适配器 (HandlerAdaptor)7. HandlerAdaptor 直接将 ModelAndView 交给 DispatcherServlet 至此业务处理完毕8. 业务处理完毕后我们需要将处理结果展示给用户。于是DisptcherServlet 调用 ViewResolver将 ModelAndView 中的视图名称封装为视图对象9. ViewResolver 将封装好的视图 (View) 对象返回给 DIspatcherServlet10. DispatcherServlet 调用视图对象让其自己 (View) 进行渲染将模型数据填充至视图中形成响应对象 (HttpResponse)11. 前端控制器 (DispatcherServlet) 响应 (HttpResponse) 给浏览器展示在页面上。2.流程小结
1.Spring MVC所有的请求都经过DispatcherServlet来统一分发。
2. 需要借助HandlerMapping定位到具体的Controller,然后将请求转发到对应的Controller映射。
3.Controller接口将处理用户请求这和Java Servlet扮演的角色是一致的。一旦Controller处理完用户请求则返回ModelAndView(数据和视图)对象给DispatcherServlet前端控制器。
从宏观角度考虑DispatcherServlet是整个Web应用的控制器
从微观考虑 Controller是单个Http请求处理过程中的控制器而ModelAndView是Http请求过程中返回的模型Model和视图View。返回的视图需要通过ViewResolver接口视图解析器在Web应用中负责查找View对象从从而将相应结果渲染给客户。三丶关于SpringMvc注解实现描述
Controller 用于标记在一个类上使用它标记的类就是一个SpringMVC Controller 对象分发处理器将会扫描使用了该注解的类的方法并检测该方法是否使用了RequestMapping 注解。Controller 只是定义了一个控制器类而使用RequestMapping 注解的方法才是真正处理请求的处理器。单单使用Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类因为这个时候Spring 还不认识它。 RequestMapping 是一个用来处理请求地址映射的注解可用于类或方法上。用于类上表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping注解有六个属性value 指定请求的实际地址method 指定请求的method类型 GET、POST、PUT、DELETE等consumes指定处理请求的提交内容类型Content-Type例如application/json, text/html;produces: 指定返回的内容类型仅当request请求头中的(Accept)类型中包含该指定类型才返回params 指定request中必须包含某些参数值是才让该方法处理。headers 指定request中必须包含某些指定的header值才能让该方法处理请求。 PostMapping Spring MVC新特性提供了对Restful风格的支持。从命名约定我们可以看到每个注释都是为了处理各自的传入请求方法类型即GetMapping用于处理请求方法的GET类型 PostMapping用于处理请求方法的POST类型等。如果我们想使用传统的RequestMapping注释实现URL处理程序那么它应该是这样的RequestMapping(value “/get/{id}”, method RequestMethod.GET)新方法可以简化为GetMapping(“/get/{id}”) Resource 做bean的注入时使用可以写在字段和setter方法上,其实Resource并不是Spring的注解它的包是javax.annotation.Resource需要导入但是Spring支持该注解的注入。默认按照ByName自动注入。Resource有两个重要的属性name和type而Spring将Resource注解的name属性解析为bean的名字而type属性则解析为bean的类型。所以如果使用name属性则使用byName的自动注入策略而使用type属性时则使用byType自动注入策略。如果既不制定name也不制定type属性这时将通过反射机制使用byName自动注入策略。 Autowired 做bean的注入时使用可以写在字段和setter方法上,为Spring提供的注解需要导入包org.springframework.beans.factory.annotation.Autowired;它是按照类型byType装配依赖对象默认情况下它要求依赖对象必须存在如果允许null值可以设置它的required属性为false。如果我们想使用按照名称byName来装配可以结合Qualifier注解一起使用。 PathVariable 用于将请求URL中的模板变量映射到功能处理方法的参数上即取出uri模板中的变量作为参数。RequestMapping(value“/users/{userId}/topics/{topicId}”)public String test( PathVariable(value“userId”) int userId, PathVariable(value“topicId”) int topicId) 如请求的URL为“控制器URL/users/123/topics/456”则自动将URL中模板变量{userId}和{topicId}绑定到通过PathVariable注解的同名参数上即入参后userId123、topicId456。 RequestParam requestParam主要用于在SpringMVC后台控制层获取参数类似一种是request.getParameter(“name”)它有三个常用参数defaultValue “0”, required false, value “isApp”defaultValue 表示设置默认值required 铜过boolean设置是否是必须要传入的参数value 值表示接受的传入的参数类型。 ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中一般在异步获取数据时使用【也就是AJAX】。比如异步获取 json 数据加上 ResponseBody 后会直接返回 json 数据。 RequestBody 是作用在形参列表上用于将前台发送过来固定格式的数据【xml 格式或者 json等】封装为对应的 JavaBean 对象封装时使用到的一个对象是系统默认配置的 HttpMessageConverter进行解析然后封装到形参上。 RestController 作用等同于Controller ResponseBody ModelAttribute 注解用于将方法的参数或方法的返回值作为Model的属性加入到Model中然后Spring框架自会将这个Model传递给ViewResolver。Model的生命周期只有一个http请求的处理过程请求处理完后Model就销毁了。 SessionAttributes 注解只用作用在 类 上作用是将指定的 Model 的键值对保存在 session 中。可以让其他请求共用 session 中的键值对。SessionAttribute有两个参数 String[] value要保存到session中的参数名称 Class[] typtes要保存的参数的类型和value中顺序要对应上所以可以这样写SessionAttributes(types {User.class,Dept.class},value{“attr1”,”attr2”}) ControllerAdvice ControllerAdvice是Spring3.2提供的新注解,它是一个Controller增强器,可对controller中被 RequestMapping注解的方法加一些逻辑处理。最常用的就是异常处理,需要配合ExceptionHandler使用。 Exceptionhandler 可以用来统一处理方法抛出的异常