zoukankan      html  css  js  c++  java
  • SpringMVC框架

     

    1.SpringMVC

    Spring MVC 是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器。servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来最终返回响应结果的概念。
     

    2.请求-响应模型 

     3.mvc模型

     
     
     
     

    3.1 组件:

    1.前端控制器DispatcherServlet(不需要程序员开发)
    作用接收请求,响应结果,相当于转发器,中央处理器。
    有了DispatcherServlet减少了其它组件之间的耦合度。
     
    2.处理器映射器HandlerMapping(不需要程序员开发)
    作用:根据请求的url查找Handler
     
    3.处理器适配器HandlerAdapter
    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
     
    4.处理器Handler(需要程序员开发)
    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler
     
    5.视图解析器View resolver(不需要程序员开发)
    作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
     
    6.视图View(需要程序员开发jsp)
    View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf…)
     

    五大组件及作用

    DispatcherServlet

    DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

    DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处。

    HandlerMapping 

    HandlerMapping 是处理器映射,它的作用是请求派发,负责请求和控制器建立对应的关系。它是由 DispatcherServlet 调用,DispatcherServlet 会从容器中取出所有 HandlerMapping 实例并遍历,让 HandlerMapping 实例根据自己实现类的方式去尝试查找 Handler。也就是说,DispatcherServlet要将一个请求交给哪个特定的Controller,它需要咨询一个Bean,这个Bean的名字为“HandlerMapping”。

    Controller

    控制器,负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。

    ModelAndView                 

    封装数据信息和视图信息的模型。使用ModelAndView类用来存储处理完后的结果数据,以及显示该数据的视图。从名字上看ModelAndView中的Model代表模型,View代表视图,这个名字就很好地解释了该类的作用。业务处理器调用模型层处理完用户请求后,把结果数据存储在该类的model属性中,把要返回的视图信息存储在该类的view属性中,然后让该ModelAndView返回该Spring MVC框架。框架通过调用配置文件中定义的视图解析器,对该对象进行解析,最后把结果数据显示在指定的页面上。 

    ViewResolver                   

    视图解析器,ViewResolver 的主要作用是把一个逻辑上的视图名称解析为一个真正的视图。

     

    3.2 配置解析

    1.Dispatcherservlet
    Dispatcherservlet是前置控制器,配置在web.xml文件中。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controoler来处理,是配置springMVC的第一步。
     
    2.InternalResourceViewResolver
    视图名称解析器
     
    3.SpringMVC常用注解
    @Controller:标识这个类是一个控制器
    @RequestMapping:给控制器方法绑定一个uri
    @ResponseBody:将java对象转成json,并且发送给客户端
    @RequestBody:将客户端请求过来的json转成java对象
    @RequestParam:当表单参数和方法形参名字不一致时,做一个名字映射
    @PathVarible:用于获取uri中的参数,比如user/1中1的值
    Rest风格的新api
    @RestController相当于@Controller+ @ResponseBody
    @GetMapping@DeleteMapping@PostMapping@PutMapping
     
    4.SpringMVC的入门程序
    web.xml
     1 <web-app>
     2     <servlet>
     3           <!-- 加载前端控制器 -->
     4           <servlet-name>springmvc</servlet-name>
     5           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     6          <!-- 
     7                加载配置文件
     8                默认加载规范:
     9                * 文件命名:servlet-name-servlet.xml====springmvc-servlet.xml
    10               * 路径规范:必须在WEB-INF目录下面
    11               修改加载路径:
    12          -->
    13          <init-param>
    14              <param-name>contextConfigLocation</param-name>
    15              <param-value>classpath:springmvc.xml</param-value>   
    16          </init-param>
    17      </servlet>
    18     <servlet-mapping>
    19          <servlet-name>springmvc</servlet-name>
    20          <url-pattern>*.do</url-pattern>
    21     </servlet-mapping>
    22  </web-app>
    springmvc.xml
     1   <beans>
     2       <!-- 配置映射处理器:根据bean(自定义Controller)的name属性的url去寻找handler;springmvc默认的映射处理器是BeanNameUrlHandlerMapping-->
     3       <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
     4       
     5       <!-- 配置处理器适配器来执行Controller ,springmvc默认的是SimpleControllerHandlerAdapter
     6       -->
     7       <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
     8       
     9      <!-- 配置sprigmvc视图解析器:解析逻辑视图; 
    10          后台返回逻辑视图:index
    11          视图解析器解析出真正物理视图:前缀+逻辑视图+后缀====/WEB-INF/jsps/index.jsp
    12      -->
    13      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    14          <property name="prefix" value="/WEB-INF/jsps/"></property>
    15          <property name="suffix" value=".jsp"></property>        
    16      </bean>
    17  </beans>
    自定义处理器
     1   @Controller
     2   @RequestMapping("/mvc")
     3   public class MyController implements Controller{
     4    
     5       @PostMapping("/request")
     6       public ModelAndView handleRequest(HttpServletRequest arg0,
     7               HttpServletResponse arg1) throws Exception {
     8           ModelAndView mv = new ModelAndView();
     9          //设置页面回显数据
    10          mv.addObject("hello", "欢迎学习springmvc!");
    11          
    12         //返回物理视图
    13          //mv.setViewName("/WEB-INF/jsps/index.jsp");
    14         
    15          //返回逻辑视图
    16          mv.setViewName("index");
    17         return mv;
    18      }
    19  }

  • 相关阅读:
    [leetcode-135-Candy]
    [leetcode-151-Reverse Words in a String]
    [leetcode-139-Word Break]
    [leetcode-129-Sum Root to Leaf Numbers]
    [leetcode-143-Reorder List]
    [leetcode-141-Linked List Cycle]
    oracle 环境变量(中文显示乱码)
    Oracle 自增长id
    Spring.net 事件的注入
    Spirng.net 替换任意方法
  • 原文地址:https://www.cnblogs.com/chensisi/p/14138584.html
Copyright © 2011-2022 走看看