SpringMVC 参数映射与文件上传 (4)

3.handler方法中添加MultipartFile类型的参数

@RequestMapping("/updateCourse") public String updateCourse(Course course, MultipartFile picFile) throws IOException { /*** * 1.获得文件,取出文件后缀 * 2.生成唯一标识, * 3.写入文件到指定路径 * 4.存储文件路径到数据库 */ System.out.println(picFile.getName()); String suffix = picFile.getOriginalFilename().substring(picFile.getOriginalFilename().lastIndexOf(".")); String fileName = UUID.randomUUID() + suffix; String basepath = getClass().getClassLoader().getResource(".").getPath(); System.out.println(basepath); picFile.transferTo(new File(basepath+"../../images/"+fileName)); course.setPic("/images/"+fileName); courseService.update(course); return "/getCourses"; }

注意:实际开发中都是存储到文件服务器,不会放在项目里

4.静态资源处

若web.xml中DispatcherServlet的URLmapping 为/ 则还需要在SpringMVC中添加静态资源配置

<mvc:resources mapping="/images/**" location="/images/"/> <!--当请求地址为/images/开头时(无论后面有多少层目录),作为静态资源 到/images/下查找文件-->

若URLMapping为*.action 或类似其他的时则无需处理,因为Tomcat会直接查找webapp下的资源,不会交给DispatcherServlet

请求限制

一些情况下我们可能需要对请求进行限制,比如仅允许POST,GET等...

RequestMapping注解中提供了多个参数用于添加请求的限制条件

value 请求地址

path 请求地址

method 请求方法

headers 请求头中必须包含指定字段

params 必须包含某个请求参数

consumes 接受的数据媒体类型 (与请求中的contentType匹配才处理)

produce 返回的媒体类型 (与请求中的accept匹配才处理)

案例:

@RequestMapping(value = "/editCourse",method = RequestMethod.POST,headers = {"id"},params = {"name"},consumes = {"text/plain"})

为了简化书写,MVC还提供了集合路径和方法限制的注解,包括常见的请求方法:

PostMapping GetMapping DeleteMapping PutMapping 例: @PostMapping("/editCourse")

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzyxf.html