springMVC小结

SpringMVC

一、概述

  • SpringMVC做web开发的框架,实际是spring框架中的一个模块
  • SpringMVC的使用就是基于spring的,容器的概念,SpringMVC会创建容器,WebApplicationContext。SpringMVC作为容器是创建和管理控制器对象的,使用@Controller创建控制器对象
  • 三层和框架的对应
    1. SpringMVC:界面层,接受用户请求,显示处理结果
    2. Spring:业务层,处理业务逻辑的,spring创建Service,Dao,工具类等对象
    3. MyBatis:持久层,访问数据库的,对数据增删改查
  • SpringMVC底层访问依然是Servlet-DispatcherServlet(中央调度器)
    1. 创建WebApplicationContext对象,读取配置文件,进而创建控制器对象
    2. 它是一个Servlet,要接受用户的请求,显示处理结果

二、SpringMVC处理web请求

  • 注解

    1. @Controller:创建控制器类的对象,接受请求,处理请求
    2. @RequestMapping:请求映射,把请求绑定到一个方法,让这个方法处理请求
      1. value:请求的uri地址,唯一值
      2. method:请求的方式,使用RequestMethod类的枚举值,例如,get请求,RequestMethod.GET
  • 接收用户提交的参数

    1. HttpServletRequestHttpServletResponseHttpSession可以直接出现在处理器方法的参数位置

    2. 逐个接受参数,处理器方法的形参名和请求中参数名一样。按名称对应赋值

    3. 解决请求中post方式有中文乱码,使用过滤器解决问题。CharacterEncodingFilter

      <!--注册声明过滤器,解决post请求乱码的问题-->
      <filter>
          <filter-name>characterEncodingFilter</filter-name>
          <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
          <!--设置项目中使用的字符编码-->
          <init-param>
              <param-name>encoding</param-name>
              <param-value>utf-8</param-value>
          </init-param>
          <!--强制请求对象(HttpServletRequest)使用encoding编码的值-->
          <init-param>
              <param-name>forceRequestEncoding</param-name>
              <param-value>true</param-value>
          </init-param>
          <!--强制应答对象(HttpServletResponse)使用encoding编码的值-->
          <init-param>
              <param-name>forceResponseEncoding</param-name>
              <param-value>true</param-value>
          </init-param>
      </filter>
      
      <filter-mapping>
          <filter-name>characterEncodingFilter</filter-name>
          <!--
      		/*:表示强制所有的请求先通过过滤器处理
      	-->
          <url-pattern>/*</url-pattern>
      </filter-mapping>
  1. 逐个接收中,请求中参数名和形参名不一样,使用@RequestParam解决问题
    1. 使用java对象接收请求的参数,要求请求中参数名和属性名一样
    2. springmvc处理器方法的形参还可以Map,List等集合类型,数组都可以
  • 处理器方法的返回值:表示请求的处理结果

    1. ModelAndView:表示数据和视图,对视图执行forward

    2. String:表示视图的,可以逻辑名称,完整视图路径,对视图执行forward

    3. void:返回值本身不能表示数据和视图,可以响应ajax请求

    4. 对象Object:表示数据的,响应ajax请求

      springmvc处理器方法返回对象,转为json响应ajax步骤

      1. 加入处理java到json转换的工具库:jackson
      2. 在springmvc配置文件加入注解驱动<mvc:annotation-driven>
      3. 在处理器方法的上面加入@ResponseBody
  • url-pattern

    • 设置中央调度器的url-pattern是/:导致静态资源访问失败都是404,动态资源可以正常访问
    • 第一种解决静态资源访问的方案:

      • 在springmvc的配置文件中加入<mvc:default-servlet-handler><mvc:annotation-driven>
      • 原理:给程序内存增加一个处理器对象,DefaultHttpRequestHandler,让这个对象处理静态资源的访问。
    • 第二种处理静态资源:使用的框架中<mvc:resources>标签,由框架自己处理静态资源的访问

  • ssm整合开发

    • ssm整合有两个容器
      1. springmvc的容器:管理controller,视图等对象
      2. spring的容器:service,dao等对象
    • 创建容器的方式
      1. 创建springmvc的容器对象:使用的中央调度器DispatcherServlet
      2. 创建spring容器对象,使用监听器ContextLoaderListener
    • 配置文件
      1. springmvc的配置文件
      2. spring配置文件
      3. mybatis主配置文件
      4. 数据库的属性配置文件
  • 核心技术

    • 转发和重定向
      • 转发:forward
      • 重定向:redirect
      • 特点:都不和是解析器一同工作,就当项目中没有视图解析器

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!