Ⅰ 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}