SpringMVC:上传与拦截器之一

文件上传

文件的上传需要使用post请求,且enctype需为multipart/form-data(分段数据)

<form th:action="@{/testUp}" method="post" enctype="multipart/form-data">
</form>
@RequestMapping("/testUp")
public String testUp(MultipartFile phone) {
    System.out.println(phone.getName());
    System.out.println(phone.getOriginalFilename());
    return "success";
}
<!--需要在SpringMVC配置文件中配置文件上传解析器-->
<!--注意:id必须叫multipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

上传

@RequestMapping("/testUp")
public String testUp(MultipartFile phone,HttpSession session) throws IOException {
    //通过session创建servletContext对象
    ServletContext servletContext = session.getServletContext();
    //        通过servletContext对象获取photo的真实路径
    String realPath = servletContext.getRealPath("/photo");
    //      判断路径是否存在,如果不存在则创建相对应的路径。
    File file = new File(realPath);
    if(!file.exists()){
        file.mkdir();
    }
    //        获取文件名
    String name = phone.getOriginalFilename();
    //        拼接路径
    String path=realPath+File.separator+name;
    //        上传
    phone.transferTo(new File(path));
    return "success";
}
//        获取文件名
String filename = phone.getOriginalFilename();
//        解决重名问题,使用UUID作为文件名
//        获取文件的后缀
String suffixName = filename.substring(filename.lastIndexOf("."));
//        将UUID转换为String类型
String uuid = UUID.randomUUID().toString();
//        获取新的文件名
String realFileName=uuid+suffixName;

拦截器

  • 创建一个类去实现HandlerInterceptor,并重写三个方法。

    public class TestInterceptor implements HandlerInterceptor{}
    
  • SpringMVC的在配置文件中注册拦截器

    <!--    配置拦截器-->
    <mvc:interceptors>
        <bean class="com.boerk.mvc.interceptor.TestInterceptor"></bean>
    </mvc:interceptors>
    <!--	或者-->
    <mvc:interceptors>
        <ref bean="testInterceptor"></ref>
    </mvc:interceptors>
    
  • 也可以使用拦截器拦截指定的路径

    <mvc:interceptor>
        <!--拦截所有请求-->
        <mvc:mapping path="/**"/>
        <!--排除前往主页的请求-->
        <mvc:exclude-mapping path="/"/>
        <ref bean="testInterceptor"></ref>
    </mvc:interceptor>
    
上一篇:人工智障三子棋


下一篇:SpringMVC