日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【SSM框架系列】SpringMVC的文件上传、拦截器及异常处理

發布時間:2025/5/22 javascript 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SSM框架系列】SpringMVC的文件上传、拦截器及异常处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SpringMVC的文件上傳

服務器端實現文件上傳的技術有很多種,Servlet3.0,FileUtils,框架等等,都可以實現文件上傳,不管使用哪一種上傳技術,都必須滿足三要素:

  • 表單項type=“file”

  • 表單的提交方式是post

  • 表單的enctype屬性是多部分表單形式,及enctype=“multipart/form-data”

<form action="${pageContext.request.contextPath}/user/quick22" method="post" enctype="multipart/form-data">名稱<input type="text" name="username"><br/>文件1<input type="file" name="uploadFile"><br/><input type="submit" value="提交"></form>

SpringMVC的請求-文件上傳-文件上傳的原理

SpringMVC的請求-文件上傳-單文件上傳的代碼實現1

添加依賴

<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.3</version></dependency>

配置多媒體解析器

<!--配置文件上傳解析器--><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="UYF-8"/><property name="maxUploadSize" value="500000"/></bean>

后臺程序

@RequestMapping(value="/quick22")@ResponseBodypublic void save22(String username, MultipartFile uploadFile) throws IOException {System.out.println(username);System.out.println(uploadFile);}

SpringMVC的請求-文件上傳-單文件上傳的代碼實現2

完成文件上傳

@RequestMapping(value="/quick22")@ResponseBodypublic void save22(String username, MultipartFile uploadFile) throws IOException {System.out.println(username);//獲得上傳文件的名稱String originalFilename = uploadFile.getOriginalFilename();uploadFile.transferTo(new File("C:\\upload\\"+originalFilename));}

SpringMVC的請求-文件上傳-多文件上傳的代碼實現3

多文件上傳,只需要將頁面修改為多個文件上傳項,將方法參數MultipartFile類型修改為MultipartFile[]即可

<form action="${pageContext.request.contextPath}/user/quick23" method="post" enctype="multipart/form-data">名稱<input type="text" name="username"><br/>文件1<input type="file" name="uploadFile"><br/>文件2<input type="file" name="uploadFile"><br/><input type="submit" value="提交"></form>@RequestMapping(value="/quick23")@ResponseBodypublic void save23(String username, MultipartFile[] uploadFile) throws IOException {System.out.println(username);for (MultipartFile multipartFile : uploadFile) {String originalFilename = multipartFile.getOriginalFilename();multipartFile.transferTo(new File("C:\\upload\\"+originalFilename));}}

SpringMVC的攔截器

SpringMVC攔截器-攔截器的作用

  • Spring MVC 的攔截器類似于 Servlet 開發中的過濾器 Filter,用于對處理器進行預處理和后處理。

  • 將攔截器按一定的順序聯結成一條鏈,這條鏈稱為攔截器鏈(InterceptorChain)。在訪問被攔截的方法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。攔截器也是AOP思想的具體實現。

Filter過濾器的作用

  • 在請求到達目標資源之前干的事(對request增強)
  • 在響應到達客戶端之前干的事(對response增強)
  • 可以決定是否讓請求到達目標資源

SpringMVC攔截器-interceptor和filter區別

關于interceptor和filter的區別,如圖所示:

SpringMVC攔截器-基礎入門

自定義攔截器很簡單,只有如下三步:

創建攔截器類實現HandlerInterceptor接口

public class MyInterceptor1 implements HandlerInterceptor {//在目標方法執行之前 執行public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, IOException {System.out.println("preHandle.....");// true代表放行,false代表阻止該請求到達目標資源return true;}//在目標方法執行之后 視圖對象返回之前執行public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {System.out.println("postHandle...");}//在流程都執行完畢后 執行public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 頁面加載完畢之后才會輸出System.out.println("afterCompletion....");}}

配置:在SpringMVC的配置文件中配置

<!--配置攔截器--><mvc:interceptors><mvc:interceptor><!--對哪些資源執行攔截操作--><mvc:mapping path="/**"/><bean class="cs.wy.interceptor.MyInterceptor1"/></mvc:interceptor></mvc:interceptors>

編寫Controller,發請求到controller,跳轉頁面

@Controllerpublic class TargetController {@RequestMapping("/target")public ModelAndView show(){System.out.println("目標資源執行......");ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("name","趙麗穎");modelAndView.setViewName("index");return modelAndView;}}

頁面

<html><body><h2>Hello World! ${name}</h2></body></html>

SpringMVC攔截器-基礎入門詳解

攔截器在預處理后什么情況下會執行目標資源,什么情況下不執行目標資源,以及在有多個攔截器的情況下攔截器的執行順序是什么?

配置攔截器2

<!--配置攔截器--><mvc:interceptors><mvc:interceptor><!--對哪些資源執行攔截操作--><mvc:mapping path="/**"/><bean class="cs.wy.interceptor.MyInterceptor2"/></mvc:interceptor><mvc:interceptor><!--對哪些資源執行攔截操作--><mvc:mapping path="/**"/><bean class="cs.wy.interceptor.MyInterceptor1"/></mvc:interceptor></mvc:interceptors>

結論:

  • 當攔截器的preHandle方法返回true則會執行目標資源,如果返回false則不執行目標資源

  • 多個攔截器情況下,配置在前的先執行,配置在后的后執行

  • 攔截器中的方法執行順序是:preHandler-------目標資源----postHandle---- afterCompletion

攔截器中的方法說明如下

SpringMVC異常處理機制

異常處理的思路
  • 系統中異常包括兩類:預期異常和運行時異常RuntimeException,前者通過捕獲異常從而獲取異常信息,后者主要通過規范代碼開發、測試等手段減少運行時異常的發生。

  • 系統的Dao、Service、Controller出現都通過throws Exception向上拋出,最后由SpringMVC前端控制器交由異常處理器進行異常處理

異常處理兩種方式
  • 使用Spring MVC提供的簡單異常處理器SimpleMappingExceptionResolver

  • 實現Spring的異常處理接口HandlerExceptionResolver 自定義自己的異常處理器

簡單異常處理器SimpleMappingExceptionResolver

SpringMVC已經定義好了該類型轉換器,在使用時可以根據項目情況進行相應異常與視圖的映射配置

<!--配置簡單映射異常處理器--><bean class=“org.springframework.web.servlet.handler.SimpleMappingExceptionResolver”> <property name=“defaultErrorView” value=“error”/> 默認錯誤視圖<property name=“exceptionMappings”><map> 異常類型 錯誤視圖<entry key="cs.wy.exception.MyException" value="error"/><entry key="java.lang.ClassCastException" value="error"/></map></property></bean>

自定義異常處理步驟

①創建異常處理器類實現HandlerExceptionResolver

public class MyExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {//處理異常的代碼實現//創建ModelAndView對象ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("exceptionPage");return modelAndView;}}

②配置異常處理器

<bean id="exceptionResolver" class="cs.wy.exception.MyExceptionResolver"/>

③編寫異常頁面

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body>這是一個最終異常的顯示頁面</body></html>

④測試異常跳轉

@RequestMapping("/quick22")@ResponseBodypublic void quickMethod22() throws IOException, ParseException {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); simpleDateFormat.parse("abcde");}

總結

以上是生活随笔為你收集整理的【SSM框架系列】SpringMVC的文件上传、拦截器及异常处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品久久久 | 人人玩人人干 | 欧美午夜精品久久久久久孕妇 | 久草视频首页 | 色哟哟视频网站 | 黄色片子免费 | 影音先锋在线视频观看 | 亚洲国产精品第一页 | 国产精品久久久免费视频 | 天堂а在线中文在线新版 | 二区三区视频 | 免费黄色一级视频 | 欧美xxxx黑人xyx性爽 | 好屌妞视频这里有精品 | 不卡中文| 黄色性网站 | 免费av的网站 | 日韩精品极品视频 | 少妇粉嫩小泬白浆流出 | 狠狠躁日日躁夜夜躁 | 亚洲美女屁股眼交3 | 筱田优全部av免费观看 | 亚洲4区| 秋霞二区 | 国产成人短视频在线观看 | av集中营| 亚洲伦理网 | 免费黄色小说视频 | 亚洲成年人免费观看 | 99视频精品在线 | 青青91| 黄色片播放器 | 视频一区中文字幕 | 欧美日韩在线免费播放 | 亚洲黄色在线观看 | 黄色片网站国产 | 男女午夜视频在线观看 | 伊人国产在线 | 国产传媒中文字幕 | 欧美性在线观看 | 天天干影院 | 色哥网| 国产一级做a爰片久久毛片男男 | 中文字幕在线观看精品 | 日韩一区二区不卡视频 | 亚洲乱码国产乱码精品精 | 国产中文字幕在线免费观看 | 国产探花一区 | 黄色av大全| 黑人爱爱视频 | 国产精品海角社区 | 永久免费汤不热视频 | 少妇高潮久久久久久潘金莲 | 无码播放一区二区三区 | 日日爱99 | av资源在线免费观看 | 国产亚洲精久久久久久无码苍井空 | 亚洲一级在线 | 91青青视频 | 国产美女一级视频 | 国产三级在线观看视频 | 法国伦理少妇愉情 | 欧美自拍一区 | 超碰在| 在线观看欧美国产 | 成年人免费视频网站 | 免费在线看黄色 | 你懂的在线播放 | 国产精品羞羞答答在线观看 | 久久伊人在 | 麻豆系列在线观看 | 久久夜夜操 | 影音先锋中文字幕在线视频 | 日韩城人免费 | 夜夜摸夜夜操 | 国产欧美精品一区二区在线播放 | 日韩欧美国产高清 | 亚洲女人天堂网 | 毛片视频观看 | 亚洲一区二区三区av无码 | 久久久久成人片免费观看蜜芽 | 夜夜av| 亚洲精品aⅴ中文字幕乱码 国产精品调教视频 | 国产精品变态另类虐交 | 涩涩涩在线观看 | 黄色片在线观看视频 | 久久久欧美精品sm网站 | 国产xx视频 | 婷婷午夜激情 | 国产精品自拍亚洲 | 天堂av资源网 | 日本猛少妇色xxxxx猛叫 | www.毛片com | 国产尤物av | 精品在线播放视频 | 无码黑人精品一区二区 | 五月天丁香社区 | 喷水视频在线观看 | 日本精品视频在线观看 |