下午试了一下JSP访问MS SQL Server 2014数据库的表数据,还挺顺利的。
下班后就想再试一下在JSP返回JSON格式的数据,因为只有这样,Java才能单纯地只做后台数据处理,就和其他后台处理的语言一样。
PHP挺简单,什么都不用,一句话就搞定,想着Java也肯定一样,可以很快搞定。
找了一下资料,写了代码:
<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" language="java" errorPage="error.jsp" %>
<%-- JSP访问MS SQL Server 2014数据返回JSON格式数据 --%>
<%
System.out.println("JSP访问MS SQL Server 2014数据返回JSON格式数据");
%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.PrintWriter" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="org.json.JSONArray" %>
<%@ page import="org.json.JSONException" %>
<%@ page import="org.json.JSONObject" %>
<%
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url="jdbc:sqlserver://XX.XX.XX.XX:1433;DataBase=YY";
String username="sa";
String password="CCC";
Connection DBConn;
Class.forName(driverName);
DBConn=DriverManager.getConnection(url,username,password);
Statement stmt=DBConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String StrSql="select * from ABC";
ResultSet rs=stmt.executeQuery(StrSql);
JSONArray ReturnJson=new JSONArray();
while( rs.next() ){
JSONObject JsonTmp=new JSONObject();
JsonTmp.put("c01",rs.getString(1));
JsonTmp.put("c02",rs.getString(2));
JsonTmp.put("c03",rs.getString(3));
JsonTmp.put("c04",rs.getString(4));
JsonTmp.put("c05",rs.getString(5));
ReturnJson.put(JsonTmp);
}
response.setContentType("text/json; charset=UTF-8");
PrintWriter JSPReturn=response.getWriter();
JSPReturn.write(ReturnJson.toString());
rs.close();
stmt.close();
DBConn.close();
%>
运行。
提示错误:
Only a type can be imported. org.json.JSONArray resolves to a package
JSONArray cannot be resolved to a type
编辑器使用的是IDEA社区版,不支持JavaWeb,也没有语法提示。
是不是与编辑器的编译有关呢?
查了一下,全局和项目我都做了库关联,就是在lib目录下放了JSON.jar。
上面的提示就是没有找到包,没有办法解释JSONArray这个数据类型。
会不会是包的问题或者大小写的问题?打开包:
都是对的。
开始在网上搜索,折腾了快半个小时没有结果,没有找到解决办法,可能就是与编辑器有关。
算了,不折腾了,就直接启动Tomcat,因为Tomcat的lib下我放了JSON.jar,这样可以最直接地找到问题所在。
启动Tomcat,在浏览器里查看,数据出来了,正确返回了JSON格式数据!
Java可是真不省心啊!