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>
    

相关文章

SpringMVC1.MVC架构MVC是模型(Model)、视图(View)、控制...
SpringMVC学习笔记1.SpringMVC应用1.1SpringMVC简介​Spring...
11.1数据回显基本用法数据回显就是当用户数据提交失败时,自...
一、SpringMVC简介1、SpringMVC中重要组件DispatcherServlet...
1.它们主要负责的模块Spring主要应用于业务逻辑层。SpringMV...
3.注解开发Springmvc1.使用注解开发要注意开启注解支持,2.注...