java如何生成json被前端调用

J2EE 码拜 6年前 (2015-07-18) 794次浏览

小妹前端一枚,CSDN新人,分不多,请见谅。

现在在自学前后台交互。

现在采用的是ajax调用的方法,json文件是自己写的假数据。

$.ajax({
url:”json/mood.json”,
dataType:”json”,
type:”get” ,
success:function (data){

但是我想自己尝试下搭个数据库,自己调用数据,数据已经写好,并且用java完成了生成json字符串。

package jdbcTest;

import java.sql.*;

import org.json.JSONArray;

import org.json.JSONObject;

public class JDBCtest {

public static void main(String[] args){

// 驱动程序名
String driver = “com.mysql.jdbc.Driver”;

// URL指向要访问的数据库名scutcs
String url = “jdbc:mysql://127.0.0.1:3306/mysql”;

// MySQL配置时的用户名
String user = “root”;

// MySQL配置时的密码
String password = “989531”;

JSONObject jsonObj = new JSONObject();//创建json格式的数据

JSONArray jsonArr = new JSONArray();//json格式的数组

JSONObject jsonObjArr = new JSONObject();

try {
// 加载驱动程序
Class.forName(driver);

// 连续数据库
Connection conn = DriverManager.getConnection(url, user, password);

// statement用来执行SQL语句
Statement statement = conn.createStatement();

// 要执行的SQL语句
String sql = “select * from tb2”;

// 结果集
ResultSet rs = statement.executeQuery(sql);

String name = null;

while(rs.next()) {

// 选择sname这列数据
name = rs.getString(“age”);

// 首先使用ISO-8859-1字符集将name解码为字节序列并将结果存储新的字节数组中。
// 然后使用GB2312字符集解码指定的字节数组
name = new String(name.getBytes(“ISO-8859-1″),”GB2312”);

jsonObjArr.put(“name”,rs.getString(“username”));
jsonObjArr.put(“age”,name);
jsonArr.put(jsonObjArr);//将json格式的数据放到json格式的数组里
jsonObj.put(“data”, jsonArr);//再将这个json格式的的数组放到最终的json对象中。

}
System.out.println(jsonObj.toString());

rs.close();
conn.close();

} catch(ClassNotFoundException e) {

System.out.println(“Sorry,can`t find the Driver!”);
e.printStackTrace();

} catch(SQLException e) {

e.printStackTrace();

} catch(Exception e) {

e.printStackTrace();

}
}
}

打印出来是

{“data”:[{“age”:”21″,”name”:”kitty”},{“age”:”21″,”name”:”kitty”},{“age”:”21″,”name”:”kitty”}]}

,但是下一步我就不会做了,这个java类包我要怎么用呢?怎么生成前端解析的json呢?网上查了很多资料,有说用map的,有说直接就可以get解析的。但是查了很多我很迷糊呀,因为java我只会一点点,另外我看用ajax的时候,路径都写成相对的,但是现在我的html文件包是放在d://web文件夹里的,而我的这个java程序是放在d://eclipse里面的,要怎么调用呢?网上还有人说后台通过servlet把数据抛到服务器,然后前端来获取。是这样吗?急求高手解答!感激不尽~

3分

#1

$.ajax({
type: “get”,
url: 你生成的json文件的路径,使用相对路径,
dataType:json,
success: function(msg){

}
});这种方式是让你的html直接加载静态资源文件,但是如果你想用java 程序输出到页面的,这时候你需要让你的页面与java后台程序产生一个请求与响应的过程,需要建立web应用程序并发布到web服务器上才可以完成的

#2

嗯,我本地起了一个localhost,但是起了之后也不会写了。
3分

#3

你前端有请求,后台却不给这个请求对应的响应方法,你的后台数据怎么传输到前端去?
7分

#4

通常情况下,你前端事调用后台的实现。基本上在java后台有个xxxAction的类,假设有个方法parseJson
public void parseJson(HttpServletRequest request, HttpServletResponse response) throws IOException {
//你生成的json的代码

response.setCharacterEncoding(“UTF-8”);
out = response.getWriter();
out.write(jsonObj);
out.flush();
}
这样就可以把数据刷到前台页面

#5

又是一个装妹纸的

#6

本来想回答你的,看到妹子两个字瞬间不想说了

#7

Java有json工具包,百度 Java 操作json,按照相关说明操作就行了
7分

#8

你先写一个类继承httpservlet ,然后重写里面的doGet,和doPost方法,你的ajax中type是get,就实现get方法,是post就实现post方法,在方法里组装你的json数据,然后调用这两个方法参数的后面一个参数(httpresponse)的getWrite方法,获得write对象,然后调用write方法,将你的数据写入进去。在浏览器的success中就可以处理这些数据了

#9

谢谢大家,今天看了下servlet,解决了,祝每天好心情~

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java如何生成json被前端调用
喜欢 (0)
[1034331897@qq.com]
分享 (0)