springMVC(七)-文件上传、拦截器

一、文件上传

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值