利用 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 文件中加入如下代碼

<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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM