我們都知道使用servlet時可以直接用PrintWriter對象的print方法來向頁面傳送一些字符串(可以是html標簽和內容),然后在用RequestDispatcher來轉向網頁
雖Struts2的Action返回的也是字然符串,但是這個字符串並不是將這個字符串傳給網頁,實際上它映射到一個物理視圖的,也就是網頁。
那么怎么讓Struts2返回一個字符串呢?——使用JSON
在Struts2的lib下有個struts2-json-plugin-version.jar,將其復制到WEB-INF/lib下,如果使用了eclipse,還得右鍵->Buld Path->add to buil path
然后配置action:
/****方式一 添加注解:****/ @ParentPackage(value="json-default") @Result(type="json", params={"noCache", "true", "contentType", "text/html"}) /****方式二 配置struts.xml***/ <package extends="json-default"> <action name="notice" class="com.xxx.action.NoticeAction"> <result type="json"> <param name="noCache">true</param> <param name="contentType">text/html</param> </result> </action> </package>
其中noCache這個屬性設置“是否取消瀏覽器緩存”,改為true將增加文件頭。
父包json-default是死的。
配置結果為json后,execute的返回值沒有了任何意義
那么這個json的內容是什么?
實際上,struts2會將該action中getter的名字/返回值 當作json 的鍵/值。
如: 你的action中有個String getContent()方法,返回值是"哈哈",那么生成的json字符串為:{"content":"哈哈"}
要注意的是,即使你沒有content這個屬性,也能生成對應的json
然后在JSP畫面,使用jquery發送/接收請求(JSON.parse需要下載JSON.js):
$(document).ready(function() {
$.get("notice",
function(json) {
$("#cc").html(JSON.parse(json).content);
}
);
});
