SpringMVC響應(yīng)處理詳細(xì)解讀
數(shù)據(jù)處理及跳轉(zhuǎn)
1.結(jié)果跳轉(zhuǎn)方式
①.ModelAndView
設(shè)置ModelAndView對(duì)象 , 根據(jù)view的名稱 , 和視圖解析器跳到指定的頁(yè)面
<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>
對(duì)應(yīng)的controller類:
/**
* 返回ModelAndView對(duì)象的方式
* @return
*/
@RequestMapping("/save3")
public ModelAndView save3(){
System.out.println("執(zhí)行了...");
// 創(chuàng)建mv對(duì)象
ModelAndView mv = new ModelAndView();
// 把一些數(shù)據(jù),存儲(chǔ)到mv對(duì)象中
mv.addObject("msg","用戶名或者密碼已經(jīng)存在");
// 設(shè)置邏輯視圖的名稱
mv.setViewName("suc");
return mv;
}②.ServletAPI:請(qǐng)求轉(zhuǎn)發(fā)和重定向
通過設(shè)置ServletAPI , 不需要視圖解析器 .
1、通過HttpServletResponse進(jìn)行輸出
2、通過HttpServletResponse實(shí)現(xiàn)重定向
3、通過HttpServletResponse實(shí)現(xiàn)請(qǐng)求轉(zhuǎn)發(fā)
(1)請(qǐng)求轉(zhuǎn)發(fā)
? 1、是服務(wù)器端的行為
? 2、請(qǐng)求地址不發(fā)生改變,用戶從始至終都是同一個(gè)請(qǐng)求
? 3、request數(shù)據(jù)在servlet共享,因?yàn)閺氖贾两K都是同一個(gè)請(qǐng)求
? 4、通過setAttribute進(jìn)行數(shù)據(jù)傳遞,getAttribute進(jìn)行數(shù)據(jù)接收
(2)重定向
? 1.服務(wù)器端指導(dǎo),客服端行為的行為
? 2.兩次request請(qǐng)求
? 3.用戶瀏覽器訪問的地址欄也會(huì)發(fā)生變化
? 4.重定向可以解決跨域問題
? 跨域:我們當(dāng)前訪問的地址不是我們項(xiàng)目中的地址
/**
* 請(qǐ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會(huì)攔截到所有的資源,導(dǎo)致一個(gè)問題就是靜態(tài)資源(img、css、js)也會(huì)被攔截到,從而不能被使用。解決問題就是需要配置靜態(tài)資源不進(jìn)行攔截,在springmvc.xml配置文件添加如下配置
- location元素表示webapp目錄下的包下的所有文件
- mapping元素表示以/static開頭的所有請(qǐng)求路徑,如/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對(duì)象轉(zhuǎn)換成json對(duì)象傳輸給前端
/**
* 異步的數(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對(duì)象轉(zhuǎn)換成json,字符串,再響應(yīng)。使用@ResposeBody注解 response.getWriter().print()
return user;
}
到此這篇關(guān)于SpringMVC響應(yīng)處理詳細(xì)解讀的文章就介紹到這了,更多相關(guān)SpringMVC響應(yīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringMVC數(shù)據(jù)頁(yè)響應(yīng)ModelAndView實(shí)現(xiàn)頁(yè)面跳轉(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請(qǐng)求/響應(yīng)亂碼問題解決方案解析
- SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式
- springmvc處理響應(yīng)數(shù)據(jù)的解析
相關(guān)文章
SpringBoot整合MyBatis和MyBatis-Plus請(qǐng)求后不打印sql日志的問題解決
本文主要介紹了SpringBoot整合MyBatis和MyBatis-Plus請(qǐng)求后不打印sql日志的問題解決文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java實(shí)戰(zhàn)之自助進(jìn)行多張圖片合成拼接
在當(dāng)今數(shù)字化時(shí)代,圖像處理技術(shù)在各個(gè)領(lǐng)域都發(fā)揮著至關(guān)重要的作用,本文為大家詳細(xì)介紹了如何使用Java實(shí)現(xiàn)多張圖片合成拼接,需要的可以了解下2025-02-02
Spring整合Quartz分布式調(diào)度的示例代碼
本篇文章主要介紹了Spring整合Quartz分布式調(diào)度的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法
本篇文章主要介紹了springmvc學(xué)習(xí)筆記-返回json的日期格式問題的解決方法,解決了日期格式的輸出,有興趣的可以了解一下。2017-01-01

