SpringMVC響應(yīng)處理詳細(xì)解讀
數(shù)據(jù)處理及跳轉(zhuǎn)
1.結(jié)果跳轉(zhuǎn)方式
①.ModelAndView
設(shè)置ModelAndView對象 , 根據(jù)view的名稱 , 和視圖解析器跳到指定的頁面
<bean id="templateResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"> <property name="prefix" value="/html/" /> <property name="suffix" value=".html" /> <property name="templateMode" value="HTML5"/> </bean>
對應(yīng)的controller類:
/** * 返回ModelAndView對象的方式 * @return */ @RequestMapping("/save3") public ModelAndView save3(){ System.out.println("執(zhí)行了..."); // 創(chuàng)建mv對象 ModelAndView mv = new ModelAndView(); // 把一些數(shù)據(jù),存儲到mv對象中 mv.addObject("msg","用戶名或者密碼已經(jīng)存在"); // 設(shè)置邏輯視圖的名稱 mv.setViewName("suc"); return mv; }
②.ServletAPI:請求轉(zhuǎn)發(fā)和重定向
通過設(shè)置ServletAPI , 不需要視圖解析器 .
1、通過HttpServletResponse進(jìn)行輸出
2、通過HttpServletResponse實(shí)現(xiàn)重定向
3、通過HttpServletResponse實(shí)現(xiàn)請求轉(zhuǎn)發(fā)
(1)請求轉(zhuǎn)發(fā)
? 1、是服務(wù)器端的行為
? 2、請求地址不發(fā)生改變,用戶從始至終都是同一個請求
? 3、request數(shù)據(jù)在servlet共享,因?yàn)閺氖贾两K都是同一個請求
? 4、通過setAttribute進(jìn)行數(shù)據(jù)傳遞,getAttribute進(jìn)行數(shù)據(jù)接收
(2)重定向
? 1.服務(wù)器端指導(dǎo),客服端行為的行為
? 2.兩次request請求
? 3.用戶瀏覽器訪問的地址欄也會發(fā)生變化
? 4.重定向可以解決跨域問題
? 跨域:我們當(dāng)前訪問的地址不是我們項(xiàng)目中的地址
/** * 請求轉(zhuǎn)發(fā): * @param request * @param response * @throws IOException * @throws ServletException */ @RequestMapping("/test1") public void test1(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { System.out.println("test1=" + request.getParameter("name")); request.setAttribute("msg", "你好"); //request.getRequestDispatcher("/dept/test2").forward(request,response); request.getRequestDispatcher("/html/suc.html").forward(request, response); } /** * 重定向: * @param request * @param response * @throws IOException */ @RequestMapping("t3") public void test3(HttpServletRequest request, HttpServletResponse response) throws IOException { System.out.println("我是test3"); //response.sendRedirect("/SpringMVCTest/dept/t4"); response.sendRedirect("/SpringMVCTest/html/suc.html"); }
2.ResponseBody響應(yīng)json數(shù)據(jù)
1、導(dǎo)入關(guān)鍵jar導(dǎo)入依賴
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.9.0</version> </dependency>
2、標(biāo)簽配置不過濾靜態(tài)資源
DispatcherServlet會攔截到所有的資源,導(dǎo)致一個問題就是靜態(tài)資源(img、css、js)也會被攔截到,從而不能被使用。解決問題就是需要配置靜態(tài)資源不進(jìn)行攔截,在springmvc.xml配置文件添加如下配置
- location元素表示webapp目錄下的包下的所有文件
- mapping元素表示以/static開頭的所有請求路徑,如/static/a 或者/static/a/b
<!--設(shè)置靜態(tài)資源不過濾--> <mvc:resources mapping="/css/**" location="/css/"/> <!--樣式--> <mvc:resources mapping="/images/**" location="/images/"/> <!--圖片--> <mvc:resources mapping="/js/**" location="/js/"/> <!--javascript-->
controller層代碼示例:user對象轉(zhuǎn)換成json對象傳輸給前端
/** * 異步的數(shù)據(jù)交互 * 重定向 * @return */ @RequestMapping("/save6") public @ResponseBody User save6(User user){ System.out.println(user); // 模擬,調(diào)用業(yè)務(wù)層代碼 user.setUsername("hello"); user.setAge(100); // 把user對象轉(zhuǎn)換成json,字符串,再響應(yīng)。使用@ResposeBody注解 response.getWriter().print() return user; }
到此這篇關(guān)于SpringMVC響應(yīng)處理詳細(xì)解讀的文章就介紹到這了,更多相關(guān)SpringMVC響應(yīng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringMVC數(shù)據(jù)頁響應(yīng)ModelAndView實(shí)現(xiàn)頁面跳轉(zhuǎn)
- Java SpringMVC數(shù)據(jù)響應(yīng)超詳細(xì)講解
- SpringMVC響應(yīng)視圖和結(jié)果視圖詳解
- SpringMVC中Controller類數(shù)據(jù)響應(yīng)的方法
- 使用SpringMVC響應(yīng)json格式返回的結(jié)果類型
- SpringMvc響應(yīng)數(shù)據(jù)及結(jié)果視圖實(shí)現(xiàn)代碼
- SpringMVC請求/響應(yīng)亂碼問題解決方案解析
- SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式
- springmvc處理響應(yīng)數(shù)據(jù)的解析
相關(guān)文章
Java?離線中文語音文字識別功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java?離線中文語音文字識別,本次使用springboot?+maven實(shí)現(xiàn),官方demo為springboot+gradle,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07如何使用JAVA實(shí)現(xiàn)數(shù)字水印
本文介紹了如何使用JAVA實(shí)現(xiàn)數(shù)字水印,主要用到了java.awt包中的AlphaComposite類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-07-07Java增強(qiáng)for循環(huán)的增刪操作代碼
Foreach循環(huán)(Foreach loop)是計(jì)算機(jī)編程語言中的一種控制流程語句,通常用來循環(huán)遍歷數(shù)組或集合中的元素,本文通過實(shí)例演示普通for循環(huán)和foreach循環(huán)使用,java增強(qiáng)for循環(huán)的操作代碼感興趣的朋友一起看看吧2024-02-02java可變參數(shù)(不定向參數(shù))的作用與實(shí)例
這篇文章主要給大家介紹了關(guān)于java可變參數(shù)(不定向參數(shù))的作用與實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Java?Date(日期)對象進(jìn)行格式化的思路詳解
Date類是經(jīng)常會使用到的一個用來處理日期、時間的一個類。Date類是在java.util包下的Date類,這篇文章主要介紹了Java?Date(日期)對象如何進(jìn)行格式化呢,需要的朋友可以參考下2022-09-09