前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringMVC开发 知识点速查

SpringMVC开发 知识点速查

作者头像
linxinzhe
发布2018-07-25 10:38:50
4080
发布2018-07-25 10:38:50
举报
文章被收录于专栏:林欣哲

SpringMVC入门

什么是SpringMVC
  • 实现MVC设计模式的框架
SpringMVC核心组件
  • DispatcherServlet 前置控制器,调度
  • Handler 处理器,完成具体业务逻辑
  • HandlerMapping 将请求映射到Handler,映射
  • HandlerInterceptor 处理器拦截器
  • HandlerExcutionChain 处理器执行链,拦截器
  • HandlerAdapter 处理器适配器,转换
  • ModelAndView 装载模型数据和视图信息
  • ViewResolver 视图解析器,渲染给客户端
SpringMVC实现流程
  1. 客户端请求被DispatcherServlet接收
  2. DispatcherServlet将请求映射到Handler
  3. 生成Handler和HandlerInterceptor
  4. 返回HandlerExecutionChain(Handler+HandlerInterceptor)
  5. DispatcherServlet通过HandlerAdapter执行Handler
  6. 返回一个ModelAndView
  7. DispatcherServlet通过ViewResolver进行解析
  8. 返回填充了模型数据的View,响应给客户端
SpringMVC深入使用
  • 只需手动编写handler,view
  • 基于XML配置的使用
    • SpringMVC基础配置
    • XML配置controller,HandlerMapping组件映射
    • XML配置VIewResolver组件映射
  • 基于注解

开发步骤:

  • 配置web.xml
代码语言:javascript
复制
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
<!-- 中文乱码 -->
  <filter>
    <filter-name>encodingFilter</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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
<!-- 防止静态资源被拦截 -->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>
<!-- 加载springmvc配置,根据url分发请求 -->
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

</web-app>
  • 配置扫描注解
代码语言:javascript
复制
<context:component-scan base-package="com.imooc.controller"></context:component-scan>

 <!-- jsp的view解析,返回的view名称不用再写.jsp -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
  • 开始用注解@controller等等开发,返回值是ModelAndView

RESTful风格

  • REST:Representational State Transfer(表述性状态转移)
  • REST是一组架构约束和原则,符合这组约束和原则的架构就是REST架构
  • RESTful核心内容:
    • 资源URI
    • 资源表述:资源在客户端和服务器之间传输
    • 状态转移:资源在服务端变化
  • RESTful架构特点:
    • 统一了客户端访问资源的接口
    • url简介易懂易扩展
    • 有利于不同系统之间的资源共享
  • RESTful是HTTP的四种操作
    • GET获取
    • POST新建
    • PUT修改
    • DELETE删除
  • RESTful开发风格举例
    • 查询课程:http://localhost:8080/course/{id} method='GET'
    • 添加课程:http://localhost:8080/course method='POST'
    • 删除课程:http://localhost:8080/course method='DELETE'
    • 修改课程:http://localhost:8080/course method='PUT'
  • 使用SpringMVC开发注意在web.xml配置支持PUT和DELETE
代码语言:javascript
复制
<filter>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
  </filter>

  <filter-mapping>
    <filter-name>hiddenHttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

SpringMVC数据绑定

  • 数据绑定:将HTTP请求中的参数绑定到Handler业务方法的形参
  • 原理:HandlerAdapter->HttpMessageConverter->Handler
  • 常用的数据绑定类型:
    • List CourseList classCourseList{List<Course>courseList;}
    • Map CourseList classCourseMap{Map<String,Course>courses;}
    • Set CourseSet classCourseSet{Set<Course>courses;}
    • 基本数据类型 @RequestParam(value='form表单里的键名')intform表单里的键名
    • 包装类(可为null) @RequestParam(value='form表单里的键名')Integerform表单里的键名
    • 数组 String[]name
    • 对象 Coursename
    • 集合(List, Set, Map)
    • JSON @RequestBody支持JSON格式
  • @ResponseBody是字符串返回

SpringMVC拦截器和过滤器

SpringMVC拦截器和过滤器的区别

  • 拦截器是使用JDK动态代理实现的,拦截的是对应调用方法的拦截,属于Spring,可以用Spring特性。是面向切面编程(AOP)的一种运用。只能对controller请求进行拦截。多个拦截器执行顺序也是xml中顺序,preHandle顺序,postHandle和afterCompletion反序。
  • 过滤器是使用Filter实现的,拦截的是Request对象,依赖于servlet容器。多个过滤器的执行顺序跟xml文件中定义的先后关系有关

拦截器

代码语言:javascript
复制
<!-- 拦截器的注册 -->
    <mvc:interceptors>

        <mvc:interceptor>
            <mvc:mapping path="/user/**"/>
            <bean class="com.imooc.core.LogInterceptor"></bean>
        </mvc:interceptor>

        <mvc:interceptor>
            <!--<mvc:mapping path="/user/search"/>
            <mvc:mapping path="/user/updatepwd"/>
            <mvc:mapping path="/user/updateheaderPic"/>-->
            <!--<mvc:mapping path="/user/*"></mvc:mapping>-->
            <!--包含子结构用**通配符-->
            <mvc:mapping path="/user/**"></mvc:mapping> 
            <!--exclude-mapping在所有拦截中进行排除,一般在通配符会有意义。-->
            <mvc:exclude-mapping path="/user/updatepwd"></mvc:exclude-mapping>
            <mvc:exclude-mapping path="/user/updatebackground/*"></mvc:exclude-mapping>
            <bean class="com.imooc.core.LoginInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 林欣哲 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringMVC入门
    • 什么是SpringMVC
      • SpringMVC核心组件
        • SpringMVC实现流程
      • SpringMVC深入使用
      • RESTful风格
      • SpringMVC数据绑定
      • SpringMVC拦截器和过滤器
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档