好的,所以您需要从本地数据库提供JSON,对吗?
您不需要服务器,可以直接从本地机器提供网页(只需指向localhost即可)
因此,基本上(我知道这不完整,但我希望它是一个好的开始)
您必须:
- 安装Servlet容器(Tomcat或Jetty),它们非常易于使用。
- 创建Servlet或JSP页面以显示数据(JSP也很容易)
- 使用JDBC连接到本地数据库,例如Derby
- 使用库将数据转换为JSON
安装Tomcat
(我将描述UNIX,但对于Windows也是一样的)
从这里下载然后将文件解压缩到您喜欢的某个目录中(例如/home/you/或C:\ Users \ you \)
打开终端并进入tomcat的bin
目录,然后输入catalina.sh run
,这将启动tomcat,您需要在系统上安装Java。
在浏览器中打开http://localhost:8080
它应该看起来像这样:
创建一个JSP文件
接下来,进入tomcat的webapps
目录,它应该包含以下文件夹:
ROOT/
docs/
examples/
host-manager/
manager/
创建一个新的文件夹,例如your
或其他名称,并在其中创建一个名为Hello.jsp
的文件,内容如下:
Hello.jsp
----------
Hello, world
然后在浏览器中打开:http://localhost:8080/your/Hello.jsp
应该看起来像:
创建一个JDBC程序
接下来,在您的web应用程序 your
中创建目录:WEB-INF/lib
,并将derby JDBC驱动程序保存在其中,您可以从这里获取它。
修改您的Hello.jsp文件,创建一个如下所示的示例表:
<%@page import="java.sql.*, java.util.*"%>
<%!
public String getData() {
List list = new ArrayList();
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection("jdbc:derby:yourdb;create=true");
PreparedStatement pstmt = connection.prepareStatement(
"CREATE TABLE PEOPLE\n"+
"(PERSON_ID INT NOT NULL GENERATED ALWAYS AS IDENTITY\n"+
" CONSTRAINT PEOPLE_PK PRIMARY KEY, PERSON VARCHAR(26))");
pstmt.executeUpdate();
pstmt = connection.prepareStatement("INSERT INTO PEOPLE(PERSON) VALUES('OSCAR')");
pstmt.executeUpdate();
} catch( Exception e ) {
throw new RuntimeException( e );
}
return "";
}
%>
:)
<%
getData();
%>
请通过访问 localhost:8080/your/Hello.jsp
再次执行您的jsp。
如果您执行两次,系统将告诉您该表已经存在:
没问题,我们已经创建了表。
使用库来输出JSON
关闭Tomcat,按下Ctrl-C。
下载并复制json-simple jar到您的WEB-INF/lib目录中。您可以从这里获取它。
重新启动Tomcat。
在JSP中注释创建代码,并将其替换为类似于此的SQL查询:
<%@page import="java.sql.*, java.util.*, org.json.simple.JSONValue"%>
<%!
public String getData() {
List list = new ArrayList();
Connection connection = null;
try {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
connection = DriverManager.getConnection("jdbc:derby:yourdb;create=true");
PreparedStatement psmt = connection.prepareStatement("SELECT person FROM PEOPLE");
ResultSet rs = psmt.executeQuery();
while( rs.next() ){
list.add( rs.getString("person"));
}
} catch( Exception e ) {
throw new RuntimeException( e );
} finally {
if( connection != null ) try {
connection.close();
} catch( Exception e ){}
}
return JSONValue.toJSONString(list);
}
%>
:)
<script>
var list = <%=
getData()
%>
</script>
注意我们使用了throw import,最后,我们改变了方法的调用方式,将结果放入javascript变量
list
中。
当运行时,JSP页面会看起来像这样(您需要右键单击以查看HTML源代码以查看
<script>
标签):
我希望您会发现这很有用。我试图让它变得非常简单易懂。
重要上面的示例充满了不良实践,请不要像那样编码(例如,直接在tomcat webapps文件夹中创建Web应用程序,或直接从JSP页面执行SQL(更不用说不关闭资源等)。
主要想法是给您足够的信息来开始使用。
有方法将其与eclipse集成,并使用SQL查看器(如SquirrelSQL客户端)来操作数据。
这应该足够简单,我实际上在写这篇答案时下载了文件并创建了测试,所以它应该可以工作。