1. 程式人生 > >Java框架(十五)之springMVC(檔案上傳、攔截器)

Java框架(十五)之springMVC(檔案上傳、攔截器)

一、jackson

@RequestBody/ @ResponseBody處理Json資料 作用: @RequestBody註解用於讀取http請求的內容(字串),通過springmvc提供的HttpMessageConverter介面將讀到的內容轉換為json、xml等格式的資料並繫結到controller方法的引數上。 @ResponseBody註解把controller方法的返回值(java物件)轉化為json資料。

二、檔案上傳

1.配置檔案上傳解析器

<!-- 檔案上傳解析器 -->
 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
         	<!-- 單位byte -->
         	<property name="maxUploadSize" value="1024000"></property>
 </bean>

2.程式碼案例

@RequestMapping("/upload")
	public void uploadPic(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request){
		
		String originalFilename = file.getOriginalFilename();
		//suffix=originalFilename.substring(originalFilename.lastIndexOf("."));
        String path = request.getSession().getServletContext().getRealPath("/upload");  
        File dir = new File(path);
        dir.mkdir();
		try {
			file.transferTo(new File(dir,originalFilename));
			System.out.println("success");
		} catch (IllegalStateException | IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

三、攔截器

1.定義

Spring Web MVC 的處理器攔截器類似於Servlet 開發中的過濾器Filter,用於對處理器進行預處理和後處理 攔截器程式碼編寫:實現HandlerInterceptor介面: preHandle:執行前呼叫此方法 postHandle:controller執行後但未返回檢視前呼叫此方法 afterCompletion:controller執行後且檢視返回後呼叫此方法

2.攔截器配置

<!--攔截器 -->
<mvc:interceptors>
	<!--多個攔截器,順序執行 -->
	<mvc:interceptor>
		<mvc:mapping path="/**"/>
		<mvc:exclude-mapping path="/login*"/><!—不攔截的路徑-->
		<bean class="com.qf.springmvc.filter.HandlerInterceptor1"></bean>
	</mvc:interceptor>
	<mvc:interceptor>
		<mvc:mapping path="/**"/>
		<bean class="com.qf.springmvc.filter.HandlerInterceptor2"></bean>
	</mvc:interceptor>
</mvc:interceptors>