Java SpringMVC數(shù)據(jù)響應超詳細講解
1)頁面跳轉(zhuǎn) ?
直接返回字符串:此種方式會將返回的字符串與視圖解析器的前后綴拼接后跳轉(zhuǎn)。?

返回帶有前綴的字符串:
轉(zhuǎn)發(fā): forward:/WEB-INF/views/index.jsp
重定向: redirect:/index.jsp
通過ModelAndView對象返回
@RequestMapping("/quick2")
public ModelAndView quickMethod2(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("redirect:index.jsp");
return modelAndView;
}
@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("forward:/WEB-INF/views/index.jsp");
return modelAndView;
}
?在進行轉(zhuǎn)發(fā)時,往往要向request域中存儲數(shù)據(jù),在jsp頁面中顯示,那么Controller中怎樣向request 域中存儲數(shù)據(jù)呢?
① 通過SpringMVC框架注入的request對象setAttribute()方法設置。
@RequestMapping("/quick")
public String quickMethod(HttpServletRequest request){
request.setAttribute("name","zhangsan");
return "index";
}
② 通過ModelAndView的addObject()方法設置。
@RequestMapping("/quick3")
public ModelAndView quickMethod3(){
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("forward:/WEB-INF/views/index.jsp");
modelAndView.addObject("name","lisi");
return modelAndView;
}
2)回寫數(shù)據(jù)
直接返回字符串:Web基礎階段,客戶端訪問服務器端,如果想直接回寫字符串作為響應體返回的話,只需要使用response.getWriter().print(“hello world”) 即可,那么在Controller中想直接回寫字符串該怎樣呢?
① 通過SpringMVC框架注入的response對象,使用response.getWriter().print(“hello world”) 回寫數(shù)據(jù),此時不需要視圖跳轉(zhuǎn),業(yè)務方法返回值為void。
@RequestMapping("/quick4")
public void quickMethod4(HttpServletResponse response) throws IOException {
response.getWriter().print("hello world");
}
② 將需要回寫的字符串直接返回,但此時需要通過@ResponseBody注解告知SpringMVC框架,方法 返回的字符串不是跳轉(zhuǎn)是直接在http響應體中返回。
@RequestMapping("/quick5")
@ResponseBody
public String quickMethod5() throws IOException {
return "hello springMVC!!!";
}
開發(fā)中往往要將復雜的java對象轉(zhuǎn)換成json格式的字符串,我們可以使用web階段學習過的json轉(zhuǎn)換工具jackson進行轉(zhuǎn)換,
1.在pom.xml中導入jackson坐標。
<!--jackson--> <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-databind</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.通過jackson轉(zhuǎn)換json格式字符串,回寫字符串。 ?
@RequestMapping("/quick7")
@ResponseBody
public String quickMethod7() throws IOException {
User user = new User();
user.setUsername("zhangsan");
user.setAge(18);
ObjectMapper objectMapper = new ObjectMapper();
String s = objectMapper.writeValueAsString(user);
return s;
}
返回對象或集合
通過SpringMVC幫助我們對對象或集合進行json字符串的轉(zhuǎn)換并回寫,為處理器適配器配置消息轉(zhuǎn)換參數(shù), 指定使用jackson進行對象或集合的轉(zhuǎn)換,因此需要在spring-mvc.xml中進行如下配置:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
</list>
</property>
</bean>
直接在方法中返回對象或集合
@RequestMapping("/quick8")
@ResponseBody
public User quickMethod8() throws IOException {
User user = new User();
user.setUsername("zhangsan");
user.setAge(18);
return user;
}
3)配置注解驅(qū)動
在方法上添加 @ResponseBody就可以返回json格式的字符串,但是這樣配置比較麻煩,配置的代碼比較多, 因此,我們可以使用mvc的注解驅(qū)動代替上述配置。
在 SpringMVC 的各個組件中, 處理器映射器、 處理器適配器、 視圖解析器稱為 SpringMVC 的三大組件。
使用<mvc:annotation-driven>自動加載 RequestMappingHandlerMapping(處理映射器)和 RequestMappingHandlerAdapter(處理適配器)可用在Spring-xml.xml配置文件中使用 <mvc:annotation-driven>替代注解處理器和適配器的配置。
同時使用<mvc:annotation-driven>默認底層就會集成jackson進行對象或集合的json格式字符串的轉(zhuǎn)換。
<!--在spring-mvc.xml中配置mvc的注解驅(qū)動--> <mvc:annotation-driven/>
4)知識要點
SpringMVC的數(shù)據(jù)響應方式
1) 頁面跳轉(zhuǎn) ????????
- 直接返回字符串 ????????
- 通過ModelAndView對象返回
2) 回寫數(shù)據(jù) ????????
- 直接返回字符串 ????????
- 返回對象或集合
到此這篇關(guān)于Java SpringMVC數(shù)據(jù)響應超詳細講解的文章就介紹到這了,更多相關(guān)Java SpringMVC內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot解決BigDecimal傳到前端后精度丟失問題
這篇文章將通過示例詳細為大家介紹SpringBoot如何解決BigDecimal傳到前端后精度丟失問題,文中的示例代碼講解詳細,感興趣的可以了解一下2022-06-06
Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之二叉堆
二叉堆是一種特殊的堆,其實質(zhì)是完全二叉樹。二叉堆有兩種:最大堆和最小堆。最大堆是指父節(jié)點鍵值總是大于或等于任何一個子節(jié)點的鍵值。而最小堆恰恰相反,指的是父節(jié)點鍵值總是小于任何一個子節(jié)點的鍵值2022-02-02
SpringBoot?項目的創(chuàng)建與啟動步驟詳解
這篇文章主要介紹了SpringBoot?項目的創(chuàng)建與啟動,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Windows下使用IDEA搭建Hadoop開發(fā)環(huán)境的詳細方法
這篇文章主要介紹了Windows下使用IDEA搭建Hadoop開發(fā)環(huán)境,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
Java?數(shù)據(jù)結(jié)構(gòu)與算法系列精講之貪心算法
我們可能在好多地方都會聽到貪心算法這一概念,并且它的算法思想也比較簡單就是說算法只保證局部最優(yōu),進而達到全局最優(yōu)。但我們實際編程的過程中用的并不是很多,究其原因可能是貪心算法使用的條件比較苛刻,所要解決的問題必須滿足貪心選擇性質(zhì)2022-02-02
基于application和bootstrap的加載順序及區(qū)別說明
這篇文章主要介紹了application和bootstrap的加載順序及區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07

