一、文件上传
1、添加依赖
<!-- commons-fileupload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!-- commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
2、index,jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="index/requestUploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFile"/>
<input type="text" name="desc"/>
<input type="submit" value="文件上传"/>
</form>
</body>
</html>
3、springmvc.xml 配置文件
<!-- 文件上传 id="multipartResolver" id值固定-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 上传最大值, value="-1" 表示上传大小无限制 -->
<property name="maxUploadSize" value="10240000"></property>
</bean>
4、控制器类
通过 @RequestParam(“uploadFile”) 获取上传文件并传入 MultipartFile
/**
* Servlet implementation class Test
*/
@Controller
@RequestMapping("/index")
public class WelcomeServlet {
/**
* 文件上传
* @param file
* @param name
*/
@ResponseBody
@RequestMapping(value={"/requestUploadFile"})
public String requestUploadFile(@RequestParam("uploadFile") MultipartFile file,@RequestParam("desc") String name) {
System.out.println(name);
String fileName=file.getOriginalFilename();
InputStream inputStream = null;
OutputStream outputStream= null;
try {
inputStream=file.getInputStream();
outputStream = new FileOutputStream("d:\\"+fileName);
byte[] b=new byte[1024];
int len =-1;
while( (len = inputStream.read(b) ) != -1) {
outputStream.write(b,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
inputStream.close();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "";
}
}
二 、拦截器
1、拦截器类
必须实现 HandlerInterceptor 接口
MyIntercetor
public class MyIntercetor implements HandlerInterceptor{
/**
* 请求到达服务器前会被拦截
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("拦截请求");
return true;
}
/**
* 服务器响应前被拦截
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("拦截响应");
}
/**
* view完成渲染完毕后拦截
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("渲染完毕");
}
}
MyIntercetor2
public class MyIntercetor2 implements HandlerInterceptor{
/**
* 请求到达服务器前被拦截
* true :拦截完成后放行 false:拦截完成后不放行,请求失败
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("拦截请求2");
return true;
}
/**
* 服务器响应前被拦截
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("拦截响应2");
}
/**
* view完成渲染完毕后拦截
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("渲染完毕2");
}
}
2、在 springmvc.xml 文件中配置拦截器
分别配置 MyIntercetor 、MyIntercetor2 拦截器
MyIntercetor 拦截所有请求
MyIntercetor2 拦截除了 /index/requestParams 路径的所有请求
<!-- 配置拦截器 -->
<mvc:interceptors>
<!-- 默认拦截全部请求 -->
<bean class="com.slq.intercetor.MyIntercetor"></bean>
<mvc:interceptor>
<!-- 拦截指定路径,依照ant风格 -->
<mvc:mapping path="/**"/>
<!-- 不拦截该路径 -->
<mvc:exclude-mapping path="/index/requestParams"/>
<bean class="com.slq.intercetor.MyIntercetor2"></bean>
</mvc:interceptor>
</mvc:interceptors>