springmvc檔案上傳和攔截器
檔案上傳
用到這兩個包
配置檢視解析器:springmvc配置檔案配置
Form.jsp<!-- id必須要是“multipartResolver” --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- maxUploadSize檔案上傳的最大值,單位是byte --> <property name="maxUploadSize" value="1024000000"></property> </bean>
<form action="test/toPerson8.do" method="post" enctype="multipart/form-data"> name:<input name="name" type="text"><br/> age:<input name="age" type="text"><br/> address:<input name="address" type="text"><br/> birthday:<input name="birthday" type="text"><br/> pic:<input type="file" name="pic"><br/> <input type="submit"><br/> </form>
新建資料夾 upload在webroot下;存放上傳的檔案;
提交表單:
重啟tomcat@RequestMapping(value="/toPerson8.do") public String toPerson8(Person person,HttpServletRequest request) throws Exception{ //第一步轉化request MultipartHttpServletRequest rm = (MultipartHttpServletRequest) request; //獲得檔案 CommonsMultipartFile cfile = (CommonsMultipartFile) rm.getFile("pic"); //獲得檔案的位元組陣列 byte[] bfile = cfile.getBytes(); String fileName = ""; //獲得當前時間的最小精度 SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmssSSS"); fileName = format.format(new Date()); //獲得三位隨機數 Random random = new Random(); for(int i = 0; i < 3; i++){ fileName = fileName + random.nextInt(9); } //獲得原始檔名 String origFileName = cfile.getOriginalFilename(); //XXX.jpg String suffix = origFileName.substring(origFileName.lastIndexOf(".")); //拿到專案的部署路徑 String path = request.getSession().getServletContext().getRealPath("/"); //定義檔案的輸出流 OutputStream out = new FileOutputStream(new File(path+"/upload/"+fileName+suffix)); out.write(bfile); out.flush(); out.close(); return "jsp/index"; }
http://localhost:8080/springmvc-2/test1/toForm.do
選擇一個檔案 提交,成功;
多了一個圖片
在tomcat下:
D:\java\apache-tomcat-6.0.37\webapps\springmvc-2\upload
攔截器:
新建包:cn.edu.hqu.interceptor類:MyInterceptor implements HandlerInterceptor;
三個方法分別對應前面圖三個攔截,
Perihandle前置攔截:最多的是對許可權的攔截
/**
* 執行時機:在執行controller之前來執行
* 返回值型別:boolean:true代表放行可以訪問controller,
* false表示不可以訪問controller
*/
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
return false;
}
}
Posthandle後置攔截:
/**
* 執行時機:controller執行完,檢視解析器沒有把檢視解析成頁面
* 對檢視做統一的修改,主要提現的Model上
*/
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView mv) throws Exception {
}
最終攔截:
/**
* 執行時機:檢視已經被解析完畢,類似try catch 後的finally
*/
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
}
在每個方法輸出一句話:
System.out.println("afterCompletion...");
System.out.println("postHandle...");
System.out.println("preHandle...");
將前置攔截改成true;配置攔截器:在springmvc配置檔案配置
<mvc:interceptors>
<mvc:interceptor>
<!-- 對所有的請求都攔截,使用/**,對某個模組下的請求做攔截/模組名/* -->
<mvc:mapping path="/**"/>
<bean class="cn.edu.hqu.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
重啟tomcat 訪問
http://localhost:8080/springmvc-2/test/toForm.do
控制檯輸出:
preHandle...
postHandle...
afterCompletion...
將前置攔截改成false
訪問
http://localhost:8080/springmvc-2/test/toForm.do
無法進行跳轉;控制檯輸出:
preHandle...
前置攔截 改成true
輸出攔截器的test
後置攔截:
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView mv) throws Exception {
System.out.println("postHandle...");
Map<String, Object> map = mv.getModel();
map.put("test", "addpend something by Jerome");
}
Jsp/index.jsp
加 <h5>${test}</h5>
重啟tomcat 訪問
http://localhost:8080/springmvc-2/test/toPerson5.do
輸出:
…
addpend something by Jerome
模擬異常:
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception ex) throws Exception {
System.out.println("afterCompletion...");
ex.printStackTrace();
System.out.println("===========");
}
在頁面輸出 :jsp/index.jsp下面加 <%=1/0 %>訪問:http://localhost:8080/springmvc-2/test/toPerson5.do
異常:控制檯
攔截器裡面方法的輸出;這捕捉到異常可以做日誌監控方面的工作;
補充:
載入配置檔案,我們配置檔案一般放在config下,名字也可以自己取;
只要在web.xml配置
<!-- springmvc的中央控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
初始化配置檔案;原始碼下載:http://pan.baidu.com/s/1mg3GcLq
相關推薦
SSM框架——springmvc檔案上傳和攔截器
檔案上傳 1.檔案上傳前提 form表單的enctype取值必須是:mutipart/form-data(預設值是:application/x-www-form-urlencoded) method屬性取值必須是Post 提供一個檔案選擇域 2.使用 Commo
springmvc檔案上傳和攔截器
檔案上傳 用到這兩個包 配置檢視解析器:springmvc配置檔案配置 <!-- id必須要是“multipartResolver” --> <bean id="multipartResolver" class="org.springframewo
Java框架(十五)之springMVC(檔案上傳、攔截器)
一、jackson @RequestBody/ @ResponseBody處理Json資料 作用: @RequestBody註解用於讀取http請求的內容(字串),通過springmvc提供的HttpMessageConverter介面將讀到的內容轉換為json
SpringMVC檔案上傳和下載
1. 檔案上傳 SpringMVC通過MultipartResolver來實現檔案上傳,預設沒有裝配,使用MultipartResolver需要加上commons-fileupload這個jar包。 1.1 配置MultipartResolver <!--配置上傳檔案控制元
springmvc請路徑引數,springmvc-json-ajax使用,springmvc檔案上傳,springmvc檔案下載,springmvc攔截器(內容較多)
按照操作,絕對都可以實現,親測。。。。。(專案所有檔案和目錄結構全都放上去了) idea工具,建立maven專案 第一步: 放置各種配置檔案: pom.xml <?xml version="1.0" encoding="UTF-8"?> <p
springMVC整理04--文件上傳 & 攔截器 & 異常處理
1.2 cli 啟用 錯誤頁 ini val con 捕獲 錯誤頁面 1. 文件上傳 SpringMVC 的文件上傳非常簡便,首先導入文件上傳依賴的 jar: 1 <!-- 文件上傳所依賴的 jar 包 --> 2 <dependency>
在SpringMVC框架中實現檔案上傳和下載
首先在springmvc.xml中配置檔案上傳的屬性 <!-- 檔案上傳的屬性值 --> <bean id="multipartResolver" class="org.springframework.web.multi
SpringMVC的檔案上傳和下載
SpringMVC會根據請求方法簽名的不同,將請求訊息中的資訊以一定的方式轉換並繫結到請求方法的引數中。在請求訊息到達真正呼叫處理方法的這段時間內,SpringMVC還會完成很多其他的工作,包括請求訊息轉換、資料轉換、資料格式化以及資料校驗。一:SpringMVC實現
使用springMVC實現檔案上傳和下載之檔案下載
接上一篇,檔案下載需要獲取下載檔案的儲存路徑,這裡只是手動填入,如果是在具體專案中,可以把檔名和上傳後的儲存路徑儲存在資料庫中。然後增加一個檔案列表的頁面展示檔名和檔案路徑,然後點選下載的時候把相應的
springmvc和servlet下的檔案上傳和下載(存檔案目錄和存資料庫Blob兩種方式)
專案中涉及了檔案的上傳和下載,以前在struts2下做過,今天又用springmvc做了一遍,發現springmvc封裝的特別好,基本不用幾行程式碼就完成了,下面把程式碼貼出來: FileUpAndDown.jsp <%@ page language="java"
springmvc實現檔案上傳和下載
springmvc實現檔案上傳的步驟: 1.頁面上,通過input來準備file元件,該標籤,必須給定name屬性值(該name不能和實體類的屬性名一致)同時,要求form表單必須給定一個屬性:enctype="multipart/form-data"<form a
系列五、springMVC實現檔案上傳和跨伺服器上傳檔案
一、實現檔案上傳 專案目錄如下所示 一、匯入依賴和配置springmvc.xml、web.xml 這個兩個jar
多文件上傳與攔截器
quest 配置文件 mon index.jsp except for can ring servle @Controller public class MostFileController { //多文件上傳 @RequestMa
springmvc實現上傳和下載
transfer try .com print frame row 快捷鍵 oid inpu 非常簡單的小例子,註釋的很清楚。話不多少,看代碼 FileController.java package com.imooc; import org.apache
javaExcel檔案上傳和下載
上傳在頁面必須加上下面屬性 <form method="post" enctype="multipart/form-data" target="frameFile" action="${vehiclePath }/bindVehicle?${_csrf.parameterName}=$
SpringBoot多檔案上傳和檔案下載
1、前端的form表單: <form id="form" action="controller層的多檔案上傳方法訪問路徑" method="post" enctype="multipart/form-data"> <input type="file" n
xshell 檔案上傳和下載
xshell 檔案上傳和下載 介紹兩種方式:命令、工具 上傳和下載參照物件是本機 命令: 1.sz 檔案下載(檔案大小限制 4G) 2.rz 檔案上傳 工具: File Transfer(工具欄中有) 這個沒有上
Struts2的檔案上傳和下載(1)單檔案上傳
在struts2中整合fileuoload功能,因為在匯入的jar包中包含了common-fileipload.jar檔案 在struts2中的interceptor 中有一個fileupload攔截器,他的主要功能就是完成檔案上傳。 注意事項 method=post
SpringMVC檔案上傳的方式
檔案上傳怎麼上傳?渣渣的筆記,可能幫助到你哦!!! 檔案上傳的流程如下: 一、在你的IDEA裡面建立一個web工程,在你的WEB-INF目錄下建立lib目錄,同時呢匯入springmvc需要的架包。 二、在配置好架包後,在你的src中建立一個xml檔案,我這裡取名為(spring-
**#使用springboot進行檔案上傳和下載**
使用springboot進行檔案上傳和下載 ##檔案下載功能的實現思路: 1.獲取要下載的檔案的絕對路徑 2.獲取要下載的檔名 3.設定content-disposition響應頭控制瀏覽器以下載的形式開啟檔案 4.獲取要下載的檔案輸入流 5.建立資料緩衝區//緩衝區解釋