SpringMVC響應Ajax請求(@Responsebody注解返回頁面)


項目需求描述:page1中的ajax請求Controller,Controller負責將service返回的數據填充到page2中,並將page2整個頁面返回到page1中ajax的回調函數。
一句話表述:利用SpringMVC,以一個頁面作為響應返回給ajax。

接下來,我們將介紹怎樣將這樣的需求實現到SpringMVC中,廢話不多說,分步上代碼。

1. Jquery ajax請求

對這部分不太熟悉的同學可以移步我的另一篇博客詳解jQuery中ajax函數:$.get(),$.post(),$.ajax()。首先我們需要向Controller發送ajax請求。

function res(){
$.post('mine',{
qt:$('#mtext').attr('value')
},function(data) {
$('#queryresult').html(data);
});
}

page1頁面

<div id="queryresult"></div>

頁面中具體實現的內容不進行贅述,各位客官根據自身項目情況進行腦補即可。

2. SpringMVC處理ajax請求

先介紹一個SpringMVC中的注釋@Responsebody。使用@Responsebody標識的方法表示該方法的返回結果直接寫入HTTP response body中,一般在異步獲取數據時使用,在使用@RequestMapping后,返回值通常解析為跳轉路徑,加上@Responsebody后返回結果不會被解析為跳轉路徑,而是直接寫入HTTP response body中。比如異步獲取json數據,加上@Responsebody后,會直接返回json數據。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource;
import java.io.IOException;
import java.util.List;
@Controller
public class DMController {
@Resource
private IDMService dmService;
@RequestMapping(value = "/mine",method = RequestMethod.POST)
public @ResponseBody ModelAndView textMine(String qt,ModelAndView m) throws IOException {
List<QueryResult> qrresults=dmService.getQueryResults(qt);//QueryResult是自定義的pojo
m.addObject("queryresults",qrresults);
m.setViewName("page2");
return m;
}
}

利用ModelAndView將Service中的結果值傳到page2頁面,並將ModelAndView對象返回到ajax。

page2頁面

<c:forEach items="${queryresults}" var="queryresults">
<div>
<p>${queryresults.resultTitle}</p>
<p>${queryresults.resultContent}</p>
</div>
</c:forEach>

至此,SpringMVC以頁面響應Ajax請求的整個過程也結束,整個過程還需要各位客官仔細理解,然后結合自己的實際需求進行改進。項目中運用到的場景如下圖。
springmvc響應ajax請求

參考:
http://www.aichengxu.com/view/38943


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM