2016-01-08 78 views
0

我有一個html登錄頁面,用戶必須輸入一個數字,如果這個數字在數據庫中註冊,用戶將被重定向到某個站點。如果該號碼不在數據庫中,則用戶可以看到錯誤消息。目前我正在用java servlet,本地mySql數據庫和tomcat 8.0來完成這項工作,並且它完美地工作。但我需要使用JSON訪問遠程數據庫,我用mozilla firefox上的海報插件填充數據庫,我可以看到數據庫中有什麼。所以它需要通過json檢查HTML頁面上的用戶輸入與數據庫中的數據並授予訪問權限。這是我的Java servlet連接到我的mysql數據庫。JSON和java servlet

import java.io.*; 
    import javax.servlet.*; 
    import javax.servlet.http.*; 
    import java.sql.*; 

    public class servlet extends HttpServlet{ 

     public void doGet(HttpServletRequest request, 
         HttpServletResponse response) 
       throws ServletException, IOException 
     { 
      String Ticketnumber = request.getParameter("Ticketnumber"); 

      if(Ticketnumber.length() >= 16 || Ticketnumber.length() <= 14){ 
       response.sendRedirect("http://localhost:8080/Error.html"); 
      } 

      String DB_URL="jdbc:mysql://localhost/ticketnumbers"; 
      String USER = "root"; 
      String PASS = "password"; 

      try{ 
      Class.forName("com.mysql.jdbc.Driver"); 

      Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); 

      final String sql; 
      sql = "select Ticketnumber from users where Ticketnumber='"+ Ticketnumber +"' limit 1"; 
      PreparedStatement stmt = conn.prepareStatement(sql); 
      ResultSet rs = stmt.executeQuery(); 

      if(rs != null && rs.next()){ 
       response.sendRedirect("http://localhost:8080/Welcome.html"); 
      }else{ 
       response.sendRedirect("http://localhost:8080/Error.html"); 
      } 

      stmt.close(); 
      conn.close(); 
      }catch(SQLException se){ 
      se.printStackTrace(); 
      }catch(Exception e){ 
      e.printStackTrace(); 
      }finally{ 
      } 
     } 
     public void doPost(HttpServletRequest request, 
         HttpServletResponse response) 
     throws ServletException, IOException { 
     doGet(request, response); 
     } 
    } 
+0

你的問題不清楚。 – Perdomoff

回答

0

我「用JSON訪問它的遠程數據庫」想你指的是遠程Web服務

首先需要通過making a Java HTTP request下載JSON數據,然後使用解析器庫(GSON is very good for this)將檢索到的字符串解析爲JSON。

之後,您可以執行您的邏輯並根據解析的JSON對象驗證Ticketnumber。

您不需要連接任何數據庫,因爲您將通過HTTP獲取數據,這與通過Firefox中的Poster獲取數據的方式相同。海報不知道遠程站點正在使用哪個數據庫(如果有),它只需要URL。