本次使用的是 Mysql 数据库,表中有已以几条记录,我们通过 Servlet 读取数据,并返回为 JSON 格式的数据。



本次使用的是 Mysql 数据库,表中有已以几条记录,我们通过 Servlet  读取数据,并返回为 JSON 格式的数据。

利用 Servlet 访问数据库返回 JSON 数据

  本次使用的是 Mysql 数据库,表中有已以几条记录,我们通过 Servlet  读取数据,并返回为 JSON 格式的数据。

 

1.  新建工程文件,项目结构如图

用到的 jar 包下载地址 http://files.cnblogs.com/files/boguse/jar.zip

由于Eclipse web 项目中,当执行 Class.forName(“om.mysql.jdbc.Driver”);时 不会去查找驱动的。所以本实例中我们需要把 mysql-connector-java-5.1.39-bin.jar 拷贝到 WEB-INF 下 lib 目录。

 

 

2. Servlet 编写

Servlet的定义:Servlet(Server Applet)-全称Java Servlet,是用Java编写的服务器端程序。 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。 Servlet是100%运行在服务器端,为客户端请求作出响应的纯java应用程序。

复制代码
 1 package TestJson;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 import java.sql.*;
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 import net.sf.json.JSONArray;
11 import net.sf.json.JSONObject;
12 
13 
14 public class Test extends HttpServlet {
15          private static final long serialVersionUID = 1L;
16       
17     public Test() {
18         super();
19         // TODO Auto-generated constructor stub
20     }
21 
22     /**
23      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
24      */
25     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
26         
27         // 设置响应内容类型
28         // 设置响应内容类型
29         response.setContentType("text/json; charset=utf-8");
30                 PrintWriter out = response.getWriter();
31                 
32                 
33                  try { 
34                      
35                      Class.forName("com.mysql.jdbc.Driver");
36                      Connection connect = DriverManager.getConnection( 
37                              "jdbc:mysql://localhost:3306/test?useSSL=false","map","maptest");
38 
39                     Statement stmt = connect.createStatement(); //创建Statement对象
40                     String sql;
41                     sql = "SELECT * FROM admininfo";
42                     ResultSet rs = stmt.executeQuery(sql);
43                     JSONArray jsonarray = new JSONArray();  
44                     JSONObject jsonobj = new JSONObject(); 
45                     // 展开结果集数据库
46                     while(rs.next()){
47                         // 通过字段检索
48                         jsonobj.put("管理员", rs.getString("Aname"));  
49                         jsonobj.put("密码", rs.getString("Apwd"));  
50                         jsonobj.put("等级", rs.getString("Alevel"));                           
51                          
52                         jsonarray.add(jsonobj);             
53                       }
54                     // 输出数据
55                     out = response.getWriter();
56                     
57                     out.println(jsonarray);
58                     // 完成后关闭
59                     rs.close();   
60                     stmt.close();   
61                     connect.close();                  
62                  }catch (Exception e) { 
63                       out.print("get data error!"); 
64                       e.printStackTrace(); }
65                       
66                   }     
67                    
68             /**
69              * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
70              */
71             protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
72                 // TODO Auto-generated method stub
73                 doGet(request, response);
74             }
75         }
复制代码


 

3. 配置文件(web.xml)

想要运行该 Servlet,需要在web容器里注册上面的 Servlet,在 web.xml 文件中加入如下代码

1
2
3
4
5
6
7
8
9
10
<servlet>
     <servlet-name>Test</servlet-name>
     <servlet-class>TestJson.Test</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <!--浏览器中输入的url,可以随意取名  但是注意加"/" -->
        <url-pattern>/Test</url-pattern>
    </servlet-mapping>

4. 将项目添加至 Tomcat ,并运行 Tomcat

现在调用这个 Servlet,输入链接:http://localhost:8080/TestDemo/Test ,将显示以下响应结果:

 

我当初遇到了这个问题,Tomcat 运行后无法正常访问 Servlet ,然后发现是应为 Servlet 没有编译,这时需要将 Ecplise 设置为自动编译,然后重启 Ecplise 即可。

 

原文地址:http://www.cnblogs.com/boguse/p/6769092.html