• 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…)

    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 }    
  • 相关阅读:
    位集合
    多线程进行http请求
    mysql--测试前缀索引能否用于order by 或者 group by
    用mysql触发器实现log记录
    源码安装mysql
    C语言:void指针
    C语言:枚举类型
    C语言:结构体与数组
    C语言:联合变量
    Linux 基础入门
  • 原文地址:https://www.cnblogs.com/chensisi/p/13294089.html
Copyright © 2020-2023  润新知