• Spring MVC - 相关内容2


    目录

    一、SpringMVC参数接收

    补充:常见的前端传参形式

    使用零散形式收参

    使用对象形式收参

    使用数组形式收参(了解)

    二、SpringMVC数据传递

    三、SpringMVC文件上传下载

    文件上传

    文件下载(了解)

    封装工具类

    四、SpringMVC拦截器

    特点

    开发拦截器

    配置拦截器

    多个拦截器的执行顺序


    一、SpringMVC参数接收

    常见的前端传参形式

    前端key:无论是get时的key=value中的key,还是post表单中name属性表示的key,都是前端key。

    1. 通过地址传参:一定是GET请求,参数部分语法为?key=value&key=value,比如?name=zhang3&age=28(zhang3和28均为字符串)

    2. 通过表单传参(没有文件上传):可能为GET或POST

      • GET时依然是地址传参?key=value&key=value

      • POST时,默认情况下叫做表单形式数据,格式为key=value&key=value

    3. 通过表单传参(有文件上传):只可能为POST,格式为multipart

    4. 通过ajax传递数据,常见的有表单形式(key=value&key=value)和JSON形式({"key":value, "key":value}

    使用零散形式收参

    前端传参

    • GET 方式 http://127.0.0.1:8080/param/test?name=zhang3&age=19&bir=2012-12-12

    • POST方式

     控制器中

    补充知识:日期转换

    1. SimpleDateFormat:自己写代码做转换,可以用在任何位置,既可以把日期对象转成字符串,也可以把转成日期对象。

    2. :在jsp中把日期对象变成字符串。

    3. @DateTimeFormat:接收的前端key=value形式或multipart形式的日期字符串转成日期对象。

    使用对象形式收参

    前端传参(和零散形式一样,不要和Struts2的对象.属性形式混淆

    • GET 方式 http://127.0.0.1:8080/param/test?name=zhang3&age=19&bir=2012-12-12

    • POST方式

     实体类

     控制器中

    使用数组形式收参(了解)

    当前端使用多选框(checkbox)传递数据或进行多文件上传(multiple)时,需要数组形式收参。

    数组形式收参和零散形式、对象形式不是并列关系: 数组既可以直接写到形参列表(零散形式),也可以写到对象中(对象形式)。

    前端传参

    • GET 方式 http://127.0.0.1:8080/param/test?hobby=read&hobby=play

    • POST方式

     控制器中

    二、SpringMVC数据传递

    SpringMVC中仍然可以使用servlet的作用域来实现数据传递,在页面上使用EL表达式配合JSTL标签来完成数据的获取和显示。

     也可以通过ModelAndView来传递数据(以下代码和上面的效果一致)

    三、SpringMVC文件上传下载

    • 文件上传:文件从客户端传送给服务器。例如:用户在注册时或者在个人中心等页面上传头像;短视频网站或者动态性质的网站中需要用户上传一些视频,图片;一些专门的下载站也需要管理员或用户上传一些文件。

      • 只要在服务器上得到用户上传的文件就已经完成了文件上传的重要一步(SpringMVC主要针对这一步进行了封装)

      • 文件上传的常见业务操作把这个文件复制到指定的位置(不同场景下,文件上传的业务操作不尽相同)

    • 文件下载:文件从服务器传送给客户端。

    文件上传

    引入依赖

    
        commons-fileupload
        commons-fileupload
        1.3
    

    配置文件

     如果需要限制上传的文件大小(默认没有限制),可以进行如下配置

     JSP页面

     开发控制器

     

    文件下载(了解)

    SpringMVC本身没有对文件下载进行封装,仍然需要使用比较底层的代码完成文件下载。

    为了简化文件下载的底层代码书写,如果项目中没有org.apache.commons.io.IOUtils这个类,则引入依赖(这个依赖会在很多其他依赖中内置,因此如果可以在代码中正常导入org.apache.commons.io.IOUtils就无需引入)。

    
      commons-io
      commons-io
      2.6
    

    开发控制器

    JSP页面

    封装工具类

    使用工具类

    四、SpringMVC拦截器

    可以将多个Controller中执行的共同代码放入拦截器中执行。

    特点

    1. 拦截器只能拦截Controller的请求,不能拦截jsp(可以把需要拦截的jsp放入WEB-INF来屏蔽外部访问,然后通过被拦截的Controller使用forward跳转进去)。

    2. 拦截器可改变用户的请求轨迹。

    3. 请求先经过拦截器,之后可能还会经过拦截器。

    第一个特点和filter不一样,重点记;后两个和filter一样。

    开发过滤器:①写一个过滤器类,实现Filter接口,提取servlet中的公共代码,根据业务逻辑决定放行或拦截。②通过配置把这个过滤器类和某些路径关联起来。

    开发SpringMVC拦截器:①写一个拦截器类,实现HandlerInterceptor接口,提取Controller中的公共代码,根据业务逻辑决定放行或拦截。②通过配置把这个拦截器类和某些路径关联起来。(SpringMVC拦截器还可以实现比过滤器类更高级的功能,但简单业务中不常用)

    开发拦截器

     

    配置拦截器

    多个拦截器的执行顺序


  • 相关阅读:
    【实战技能】培训和指导:深入浅出原则
    HTML语义化标签(一)
    el-table超过宽度强制显示滚动条
    【LearnOpenGL基础入门——2】搭建第一个OpenGL窗口
    (三)数据结构-栈
    BEVFusion简介、环境配置与安装以及遇到的各种报错处理
    docker 安装cloudreve
    Springboot整合ElasticSearch(1)- 环境搭建 -非自动注入的方式
    QT中QSS设置的三种方法
    Python logging 模块详解
  • 原文地址:https://blog.csdn.net/XHW0901/article/details/126549925