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")