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方式

Spring MVC - 相关内容2_第1张图片

 控制器中

Spring MVC - 相关内容2_第2张图片

补充知识:日期转换

  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方式

Spring MVC - 相关内容2_第3张图片

 实体类

Spring MVC - 相关内容2_第4张图片

 控制器中

Spring MVC - 相关内容2_第5张图片

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

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

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

前端传参

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

  • POST方式

Spring MVC - 相关内容2_第6张图片

 控制器中

Spring MVC - 相关内容2_第7张图片

二、SpringMVC数据传递

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

Spring MVC - 相关内容2_第8张图片

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

Spring MVC - 相关内容2_第9张图片

三、SpringMVC文件上传下载

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

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

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

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

文件上传

引入依赖


    commons-fileupload
    commons-fileupload
    1.3

配置文件

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

 JSP页面

Spring MVC - 相关内容2_第10张图片

 开发控制器

Spring MVC - 相关内容2_第11张图片

 Spring MVC - 相关内容2_第12张图片

文件下载(了解)

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

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


  commons-io
  commons-io
  2.6

开发控制器

Spring MVC - 相关内容2_第13张图片

JSP页面

封装工具类

Spring MVC - 相关内容2_第14张图片

使用工具类

Spring MVC - 相关内容2_第15张图片

四、SpringMVC拦截器

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

特点

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

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

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

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

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

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

开发拦截器

 Spring MVC - 相关内容2_第16张图片

配置拦截器

Spring MVC - 相关内容2_第17张图片

多个拦截器的执行顺序

Spring MVC - 相关内容2_第18张图片

Spring MVC - 相关内容2_第19张图片


你可能感兴趣的:(java,spring,mvc,java)