Ⅰ struts2中如果用ajax調用action 如何返回json
action方法返回值設置成void,或者返回null。
方法中response返回json格式的字元串。
//獲得response
HttpServletResponse response=ServletActionContext.getResponse();
//設置輸出UTF-8編碼
response.setCharacterEncoding("UTF-8");
//獲得輸出流
PrintWriter pw = response.getWriter();
//將數據寫入輸出流
pw.write(text);
//清楚數據流緩沖區
pw.flush();
//關閉輸出流
pw.close();
struts.xml,配置例子,如下:
<package name="base" namespace="/" extends="project_default" >
<action name="baseAction" class="com.lxq.platform.action.BaseAction" method="jsonPage">
</action>
</package>
Ⅱ 使用rest,後台怎樣返回json數據,struts2以上框架,用的是註解
struts2中用rest後台返回json的方法是統一封裝response為JSONObject即可。
舉例如下:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.opensymphony.xwork2.Action;
public class Test {
public Map responseJson;
public Map getResponseJson() {
return responseJson;
}
public void setResponseJson(Map responseJson) {
this.responseJson = responseJson;
}
public String getList(){
Map<String, Object> map = new HashMap<String, Object>();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for(int i=0;i<3;i++){
Map<String, Object> m = new HashMap<String, Object>();
m.put("id", i);
m.put("name", "Mic"+i);
list.add(m);
}
map.put("rows", list);
map.put("totalCont", 3);
this.setResponseJson(map);
return Action.SUCCESS;
}
}
Ⅲ jsp頁面 jquery中運用$ajax()的方法能夠處理json數據 想用struts2中的action應該如何返回json數據
在struts的xml配置文件中 指定返回的數據格式類型
例:
<action name="findPosition" class="aeportTempletAcrion" method="findPosition">
<result name="success" type="json"></result>
</action>
result中的type屬性 設置為type="json",struts就可以處理json數據了
Ⅳ struts2怎麼返回json數據
在struts.xml中將result的type定義成json,在struts在Action請求返回的時候會自動將返回的數據封裝成json形式
也可以用下面的方法在Action中自動拼裝成Json
Gson gs = new Gson();
result = gs.fromJson(str,Object.class);
result為定義了get,set方法的數據,str為自定拼裝的Json形式的數據,Object對象類
Ⅳ struts中如何返回json格式的數據
哥們你都沒理解!
首先,你可以寫個公共的方法用來輸出json的,所以就不用每次都寫!
protected PrintWriter out() {
response.setCharacterEncoding("UTF-8");
PrintWriter writer = null;
try {
writer = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
return writer;
}
然後 out()..print("這里放你的json字元串");
我一般是用json-lib包,這包轉化;
如 我現在是轉化的集合 JSONArray jsonArray = JSONUtil.getJSONArray(searchList);
然後我就把這個輸出去,out().print(jsonArray.toString());,親就可以去前台接收了
Struts2返回的方法是 return null;
如:
public String getDutyUserShow() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
List<EcsDutyInfoDTO> searchList = ecsDutyService
.findDutyUserToday(format.format(new Date()));
if (searchList != null) {
JSONArray jsonArray = JSONUtil.getJSONArray(searchList);
System.out.println(jsonArray.toString());
out()
.print(
"{success:true,data:" + "" + jsonArray.toString()
+ "}");
} else {
out().print("{success:true,data:{[]}}");
}
return null;
}
Ⅵ struts2註解 怎麼樣返回json
返回的對象是實體類得對象的話,先把重寫實體類的toString方法:
public
String
toString(){
String
json
=
"{屬性1:'%s',屬性2:'%s',屬性3:'%s',屬性4:'%s'}";
//如果是int類型就把單引號去掉,把%s改成%d,double就改成%f
return
String.forMat(json,屬性1,屬性2,屬性3,屬性4,);
}
這是實體類裡面的
在Action裡面使用out.print()列印輸出對象的行了,返回return
null;
Ⅶ 用structs2怎樣返回json類型數據
使用Servlet返回JSON數據到客戶端:
Java代碼
package cn.ysh.studio.struts2.json.demo.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONObject;
import cn.ysh.studio.struts2.json.demo.bean.User;
public class JSON extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//將要被返回到客戶端的對象
User user=new User();
user.setId("123");
user.setName("JSONServlet");
user.setPassword("JSON");
user.setSay("Hello , i am a servlet !");
JSONObject json=new JSONObject();
json.accumulate("success", true);
json.accumulate("user", user);
out.println(json.toString());
// 因為JSON數據在傳遞過程中是以普通字元串形式傳遞的,所以我們也可以手動拼接符合JSON語法規范的字元串輸出到客戶端
// 以下這兩句的作用與38-46行代碼的作用是一樣的,將向客戶端返回一個User對象,和一個success欄位
// String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"JSONServlet\",\"say\":\"Hello , i am a servlet !\",\"password\":\"JSON\"},\"success\":true}";
// out.println(jsonString);
out.flush();
out.close();
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
Ⅷ struts2返回json的問題
此方法的action不需要返回值,struts.xml中也不需要配置action的result
-------這種方式,通過流的方式將字元串寫到頁面,一般用作返回一個結果字元串;
像需要返回一個list集合之內的,就需要人為去轉化成字元串,麻煩的很,所以就可以用到2:
使用struts-json-plugin.jar,此方法需要將struts.xml繼承自json-defaut,並且action的result的type需要設置為json
用json包來自動將集合轉換成json字元串返回,頁面可以通過對象點屬性來獲取。
Ⅸ struts2中的json返回方式
兩種方式
一 xml配置 如
<package name="user" extends="json-default">
<action name="select" class="selectAction" method="SelectAllUsers">
<result type="json">
<param name="excludeProperties">userService</param>
</result>
</action>
</package>
這需要下struts支持json的一個jar文件 :struts2-json-plugin-2.2.3.jar 這個配置會對action中所有有get和set方法的屬性進行返回 ,excludeProperties 表示不包含此屬性 ,就是不會對此進行json數據返回,另外還有個success標志屬性,表示請求返回成功之類的標記吧,具體我記不清了,你自己可以上網查下,我就不細說了
二 直接用response返回 你自己對數據拼接json字元串,但json格式要完全符合規范,你自己看哪個方便用那個方式
Ⅹ Struts2 如何返回json數組
一.使用Servlet的輸出流
JSON介面的實質是:JSON數據在傳遞過程中,其實就是傳遞一個普通的符合JSON語法格式的字元串而已,所謂的「JSON對象」是指對這個JSON字元串解析和包裝後的結果。
所以這里只需要將一個JSON語法格式的字元串寫入到Servlet的HttpServletResponse中,這里使用的是PrintWriter的方式,當然也可以採用Stream流的方式。
需要注意的是:
在調用getWriter之前未設置編碼(既調用setContentType或者setCharacterEncoding方法設置編碼),
HttpServletResponse則會返回一個用默認的編碼(既ISO-8859-1)編碼的PrintWriter實例。這樣就會造成中文亂碼。
而且設置編碼時必須在調用getWriter之前設置,不然是無效的。
編寫介面代碼:
這里的方法與一般的Struts2方法的區別是這里是void返回類型。
public void write() throws IOException{
HttpServletResponse response=ServletActionContext.getResponse();
/*
* 在調用getWriter之前未設置編碼(既調用setContentType或者setCharacterEncoding方法設置編碼),
* HttpServletResponse則會返回一個用默認的編碼(既ISO-8859-1)編碼的PrintWriter實例。這樣就會
* 造成中文亂碼。而且設置編碼時必須在調用getWriter之前設置,不然是無效的。
* */
response.setContentType("text/html;charset=utf-8");
//response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
//JSON在傳遞過程中是普通字元串形式傳遞的,這里簡單拼接一個做測試
String jsonString="{\"user\":{\"id\":\"123\",\"name\":\"張三\",\"say\":\"Hello , i am a action to print a json!\",\"password\":\"JSON\"},\"success\":true}";
out.println(jsonString);
out.flush();
out.close();
}
配置action
從以下的配置中可以明顯的看到配置與普通的action配置沒有任何區別,只是沒有返回的視圖而已。
<action name="write" class="json.JsonAction" method="write" />
返回值
{"user":{"id":"123","name":"張三","say":"Hello , i am a action to print a json!","password":"JSON"},"success":true}