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實現(xiàn)重定向
3、通過HttpServletResponse實現(xiàn)請求轉(zhuǎn)發(fā)
(1)請求轉(zhuǎn)發(fā)
? 1、是服務(wù)器端的行為
? 2、請求地址不發(fā)生改變,用戶從始至終都是同一個請求
? 3、request數(shù)據(jù)在servlet共享,因為從始至終都是同一個請求
? 4、通過setAttribute進(jìn)行數(shù)據(jù)傳遞,getAttribute進(jìn)行數(shù)據(jù)接收
(2)重定向
? 1.服務(wù)器端指導(dǎo),客服端行為的行為
? 2.兩次request請求
? 3.用戶瀏覽器訪問的地址欄也會發(fā)生變化
? 4.重定向可以解決跨域問題
? 跨域:我們當(dā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實現(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é)果視圖實現(xiàn)代碼
- SpringMVC請求/響應(yīng)亂碼問題解決方案解析
- SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式
- springmvc處理響應(yīng)數(shù)據(jù)的解析
相關(guān)文章
Java增強(qiáng)for循環(huán)的增刪操作代碼
Foreach循環(huán)(Foreach loop)是計算機(jī)編程語言中的一種控制流程語句,通常用來循環(huán)遍歷數(shù)組或集合中的元素,本文通過實例演示普通for循環(huán)和foreach循環(huán)使用,java增強(qiáng)for循環(huán)的操作代碼感興趣的朋友一起看看吧2024-02-02
java可變參數(shù)(不定向參數(shù))的作用與實例
這篇文章主要給大家介紹了關(guān)于java可變參數(shù)(不定向參數(shù))的作用與實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java?Date(日期)對象進(jìn)行格式化的思路詳解
Date類是經(jīng)常會使用到的一個用來處理日期、時間的一個類。Date類是在java.util包下的Date類,這篇文章主要介紹了Java?Date(日期)對象如何進(jìn)行格式化呢,需要的朋友可以參考下2022-09-09

