2016-03-04 110 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