2016-03-04 83 views
2

我有一個數據庫和房子,而HTML頁面使用<SELECT>,,用戶需要選擇房屋所在的地區。對客戶端有jdbc響應的servlet

的Servlet:

@WebServlet("/post") 
    public class HosesBaseServlet extends HttpServlet { 
    @Override 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException{ 
      //choice from html form 
     String choice = request.getParameter("district"); 

     //Database parameters 
     final String DB_CONNECTION = "jdbc:mysql://localhost:3306/mydb2"; 
     final String DB_USER = "root"; 
     final String DB_PASSWORD = "root"; 
     Connection conn; 
     try { 
      conn = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD); 
      System.out.println("Connection available"); 
      PreparedStatement ps = conn.prepareStatement("SELECT Square, RoomNumbers, Price FROM houses WHERE District = " + choice); 

     }catch (SQLException ex) { 
      System.out.println("Fail to connect with base"); 
     } 
    } 
} 

我怎樣才能把SQL SELECT結果到HTML頁面,並給它回客戶端?

我創建的類衆議院

public class Hosue implements Serializable { 
    private String price; 
    private String square; 
    private String RoomNumbers; 
    public String getPrice() { 
     return price; 
    } 
    public String getSquare() { 
     return square;} 
    public String getRoomNumbers() { 
     return RoomNumbers;} 

    public void setPrice(String price) { 
     this.price = price; 
    } 

    public void setSquare(String square) { 
     this.square = square; 
    } 

    public void setRoomNumbers(String roomNumbers) { 
     RoomNumbers = roomNumbers; 
    } 
} 

和房屋

public class Houses { 
public List<House> getList() { 

} 
} 

,並添加腳本到我的HTML。下一步,如何將select中的信息添加到此列表中?

+0

你更喜歡前端jsp或純html的技術? –

+0

喜歡純html,因爲我不太明白jsp是如何工作的,當servlet發送給客戶端時,jsp會轉換爲html嗎?也許jsp會更好? – user202822

+0

好的,等我給你解決。如何將房屋列表轉換爲html。 –

回答

0

你可以解決你的問題,正如前面的回答中吉德所說的那樣。但是,如果使用Java對象爲您的db實體建模並使用它們來封裝來自db的信息,那將會更好。你也可以使用DAO編程模式來更好地組織你的代碼,因此你可以定義簡單對象(bean)來模擬數據(你的數據庫實體)和數據訪問對象(DAO對象),你將在其中編碼與db的交互jdbc代碼)。 然後,你將有這樣的事情來查詢數據庫(此代碼將在你的servlet):

HouseDAO h=new HouseDAO(db connection param...) 
ArrayList<House> list=h.selectHouses(); 

在HouseDAO對象,你將創建一個方法selectHouse中,你基本上都會打動你有JDBC代碼在你的servlet中。順便說一句,你錯過了一個從ps對象中調用方法執行查詢的部分。此方法返回包含查詢結果的ResultSet對象。

通過上面的代碼,您將在ArrayList列表中擁有數據,並且您可以使用Jeed建議的代碼輸出它。顯然,如果你想避免使用jsp,你可以直接在你的servlet中打印你的html代碼。我不推薦這樣做,因爲您會將視圖細節與控件和模型代碼合併。如果您打算在未來改變您的觀點,這並不是很好。

0

將查詢結果添加到某個List或自定義對象,並將其設置爲請求對象中的屬性。

request.setAttribute(「result」,result);

然後使用RequestDispatcher轉發到下一頁。

0

使用GSON外部庫發送Java的列表轉換成String形式 HTML,

Servlet代碼看起來同樣,

List<House> listofHouses = getList from Database; 
Gson gson = new Gson(); 
String json_obj = gson.toJson(listofHouses); 
response.getWriter().println(json_obj); 

你的HTML(使用jQuery的Ajax爲處理結果&發送請求到 Servlet)代碼看起來更接近類似......

<script> 
    $.ajax({ 
      url: 'Servlet.do?distinct=YOUR_SELECTED_district_NAME', 
      type: "POST/GET", 
      data: query, 
      dataType: 'application/json; charset=utf-8', 
      success: function (data) { 
      var returnedData = JSON.parse(data);  
       alert(data); 

      $.each(data, function(index, value) { 

     ('#your_drop_down_tag_id').append($('<option>').text(value).attr('value', index)); 
      }); 

      } 
     }); 

</script> 

注:jQuery的XXX.js文件必須inclue到你的項目和你的HTML文件正確。

+0

什麼是customObjResp?我應該在哪裏粘貼這個jquery腳本? – user202822

+0

@Panwo親切地看到更新的答案,並且jquery腳本需要添加到你的r頁面中,最後同樣是你的body標籤, ...... 。 –

+0

好的,你能解釋更多細節,我更新問題 – user202822