小妹前端一枚,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把数据抛到服务器,然后前端来获取。是这样吗?急求大神解答!!感激不尽~
------解决思路----------------------
$.ajax({
type: "get",
url: 你生成的json文件的路径,使用相对路径,
dataType:json,
success: function(msg){
}
});这种方式是让你的html直接加载静态资源文件,但是如果你想用java 程序输出到页面的,这时候你需要让你的页面与java后台程序产生一个请求与响应的过程,需要建立web应用程序并发布到web服务器上才可以完成的
------解决思路----------------------
你前端有请求,后台却不给这个请求对应的响应方法,你的后台数据怎么传输到前端去?
------解决思路----------------------
通常情况下,你前端事调用后台的实现。基本上在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();
}
这样就可以把数据刷到前台页面
------解决思路----------------------
你先写一个类继承httpservlet ,然后重写里面的doGet,和doPost方法,你的ajax中type是get,就实现get方法,是post就实现post方法,在方法里组装你的json数据,然后调用这两个方法参数的后面一个参数(httpresponse)的getWrite方法,获得write对象,然后调用write方法,将你的数据写入进去。在浏览器的success中就可以处理这些数据了