SpringMVC第四课
放行静态资源
因为dispatcher-servlet一般配置的拦截路径是“/”会把除了.jsp的文件全部拦截,所以需要把静态资源放行
<!-- 放行静态资源, mapping匹配你请求的URI; location指定静态资源的位置(建议前后面都加/) -->
<mvc:resources mapping="/private/views/**" location="WEB-INF/views/,classpath:/static/" />
文件上传
2.5
<!--添加依赖-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!--dispatcher-servlet.xml中配置bean-->
<bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
<!--案例:-->
@ResponseBody
@RequestMapping("/upload2.5")
public String upload(@RequestParam("myFile") MultipartFile file){
try {
file.transferTo(new File("D:/"+file.getOriginalFilename()));
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
return "上传失败";
}
}
3.0
<!--dispatcher-servlet.xml中配置bean-->
<bean name="multipartResolver" class="org.springframework.web.multipart.support.StandardServletMultipartResolver"/>
<!--在web.xml中的servlet标签内开启Servlet3.0文件上传支持-->
<multipart-config />
<!--案例:-->
@ResponseBody
@RequestMapping("/upload2.5")
public String upload(@RequestParam("myFile") MultipartFile file){
try {
file.transferTo(new File("D:/"+file.getOriginalFilename()));
return "上传成功";
} catch (IOException e) {
e.printStackTrace();
return "上传失败";
}
}
拦截器
实现HandlerInterceptor接口,重写preHandle,postHandle,afterCompletion三个方法,一般preHandle最常用
package com.lanou3g.springmvc.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author hmt
* @date 2019/7/4 14:32
*/
public class TestInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("pre");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("post");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("after");
}
}
在dispatcher-servlet.xml中配置拦截路径
<mvc:interceptors>
<!-- 通过<bean>的形式添加interceptor,默认拦截所有请求 -->
<bean class="com.lanou3g.springmvc.interceptor.TestInterceptor" />
<!-- 通过<mvc:interceptor>配置,可以进一步拦截哪些路径和不拦截哪些路径 -->
<!--<mvc:interceptor>
<mvc:mapping path="/*" />
<mvc:exclude-mapping path="/test" />
<bean class="com.lanou3g.springmvc.interceptor.LoginInterceptor" />
</mvc:interceptor>-->
</mvc:interceptors>