Java 从servlet生成JSON
在我的android应用程序中,我使用以下代码复制特定表中的整个数据。但当我检查servlet输出时,似乎会生成重复的值。您可以通过运行以下代码来验证这一点。我不知道为什么会这样。我需要将servlet中的值作为JSON对象传递给我的应用程序Java 从servlet生成JSON,java,android,servlets,Java,Android,Servlets,在我的android应用程序中,我使用以下代码复制特定表中的整个数据。但当我检查servlet输出时,似乎会生成重复的值。您可以通过运行以下代码来验证这一点。我不知道为什么会这样。我需要将servlet中的值作为JSON对象传递给我的应用程序 import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.ResultSet; import java.sq
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONObject;
public class vlgmas extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
// TODO output your page here
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet vlgmas</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet vlgmas at " + request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Pickvalue</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet Pick at " + request.getContextPath () + "</h1>");
doPost(request,response);
out.println("</body>");
out.println("</html>");
} finally
{
out.close();
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//processRequest(request, response);
String vname = null,vcode=null,divsec=null;
JSONObject obj = new JSONObject();
List list = new ArrayList();
JSONObject obj2 = new JSONObject();
PrintWriter out = response.getWriter();
String vn[]=new String[2000],vc[]=new String[2000],ds[]=new String[2000];
int t,r1=0,r2=0,r3=0;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
java.sql.Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.200:1521:pdsm", "test", "test");
Statement stmt=conn.createStatement();
{
ResultSet rs = stmt.executeQuery("select * from cn_vlgmas");
while(rs.next())
{
//vn[r1++]=rs.getString ("vlgname");
//vc[r2++]=rs.getString("vlgcode");
//ds[r3++]=rs.getString("divsec");
vname=rs.getString ("vlgname");
vcode=rs.getString("vlgcode");
divsec=rs.getString("divsec");
obj.put("vname",vname);
obj.put("vcode",vcode);
obj.put("divsec",divsec);
list.add(obj);
obj2.accumulate("get", list);
out.println(obj2);
}
/*for(t=0;t<r1;t++)
{
//out.println(vn[t]+","+vc[t]+","+ds[t]+" ");
obj.put("vname",vn[t]);
obj.put("vcode",vc[t]);
obj.put("divsec",ds[t]);
list.add(obj);
//obj.append("rec", obj);
//out.println(list);
//obj.accumulate("get", list);
//out.println(obj);
obj2.accumulate("get", obj);
//out.println(obj2);
}*/
}
}catch(Exception e)
{
out.println("error"+e.toString());
}
}
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
import java.io.IOException;
导入java.io.PrintWriter;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.Statement;
导入java.util.ArrayList;
导入java.util.List;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入org.json.JSONObject;
公共类vlgmas扩展了HttpServlet{
受保护的void processRequest(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();
试一试{
//TODO在此处输出您的页面
out.println(“”);
out.println(“”);
out.println(“Servlet vlgmas”);
out.println(“”);
out.println(“”);
println(“Servlet vlgmas位于“+request.getContextPath()+”);
out.println(“”);
out.println(“”);
}最后{
out.close();
}
}
@凌驾
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();
试一试{
out.println(“”);
out.println(“”);
out.println(“Servlet Pickvalue”);
out.println(“”);
out.println(“”);
println(“Servlet在“+request.getContextPath()+”)处拾取;
doPost(请求、响应);
out.println(“”);
out.println(“”);
}最后
{
out.close();
}
}
@凌驾
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
//processRequest(请求、响应);
字符串vname=null,vcode=null,divsec=null;
JSONObject obj=新的JSONObject();
列表=新的ArrayList();
JSONObject obj2=新的JSONObject();
PrintWriter out=response.getWriter();
字符串vn[]=新字符串[2000],vc[]=新字符串[2000],ds[]=新字符串[2000];
int t,r1=0,r2=0,r3=0;
尝试
{
类forName(“oracle.jdbc.driver.OracleDriver”);
java.sql.Connection conn=DriverManager.getConnection(“jdbc:oracle:thin:@192.168.1.200:1521:pdsm”、“test”、“test”);
语句stmt=conn.createStatement();
{
结果集rs=stmt.executeQuery(“从cn_vlgmas中选择*);
while(rs.next())
{
//vn[r1++]=rs.getString(“vlgname”);
//vc[r2++]=rs.getString(“vlgcode”);
//ds[r3++]=rs.getString(“divsec”);
vname=rs.getString(“vlgname”);
vcode=rs.getString(“vlgcode”);
divsec=rs.getString(“divsec”);
对象put(“vname”,vname);
obj.put(“vcode”,vcode);
实物期权(“divsec”,divsec);
列表。添加(obj);
obj2.累加(“获取”,列表);
out.println(obj2);
}
/*对于(t=0;t将以下语句移出while循环
out.println(obj2);
或
不要使用JSonObject
使用JSONArray
用户更改2021114
加
在While循环中
while(rs.next())
{
obj = new JSONObject();
vname=rs.getString ("vlgname");
vcode=rs.getString("vlgcode");
divsec=rs.getString("divsec");
obj.put("vname",vname);
obj.put("vcode",vcode);
obj.put("divsec",divsec);
list.add(obj);
}
obj2.accumulate("get", list);
out.println(obj2);
你检查过了吗?它只生成最后一个数据我已经尝试过了。但是当我在循环中打印出.println(obj)时,它显示了正确的结果。但是我不知道如何在我的android代码中使用它。因为没有像“get”这样的特定名称您指定的我已经尝试过JSONArray,请参阅我的第2条评论并给出解决方案如果我移出while循环,相同的结果将被重复显示更多时间一个小的更正与您的答案。我移出while循环的最后2行。这很有效。谢谢
while(rs.next())
{
obj = new JSONObject();
vname=rs.getString ("vlgname");
vcode=rs.getString("vlgcode");
divsec=rs.getString("divsec");
obj.put("vname",vname);
obj.put("vcode",vcode);
obj.put("divsec",divsec);
list.add(obj);
}
obj2.accumulate("get", list);
out.println(obj2);