Servlet与jdbc响应客户端

时间:2016-03-04 09:05:11

标签: java servlets jdbc

我有一个带有房屋的数据库,以及带有<SELECT>,的HTML页面,用户需要选择房屋所在的区域。

的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中的信息添加到此列表中?

3 个答案:

答案 0 :(得分:0)

将查询结果添加到某个List或自定义对象,并将其设置为请求对象中的属性。

request.setAttribute(“result”,result);

然后使用RequestDispatcher转发到下一页。

答案 1 :(得分:0)

你可以像前面的回答中所说的那样解决你的问题。但是,如果使用Java对象为db实体建模并使用它们来封装来自db的信息,那将会更好。您还可以使用DAO编程模式来更好地组织代码,因此您可以定义简单对象(bean)来建模数据(数据库实体)和数据访问对象(DAO对象),您可以在其中编码与db的交互(您的jdbc代码)。 然后你会有这样的东西来查询你的数据库(这段代码将在你的servlet中):

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

在HouseDAO对象中,您将创建一个方法selectHouse,您将在其中基本上移动您在servlet中的jdbc代码。顺便说一句,您缺少一个从ps对象调用方法执行查询的部分。此方法返回包含查询结果的ResultSet对象。

使用上面的代码,您将在ArrayList列表中获得数据,并且可以使用Jeed建议的代码输出它。

显然,如果你想避免使用jsp,你可以直接在你的servlet中打印你的html代码。我不建议这样做,因为您将视图详细信息与控件和模型代码合并。如果你打算将来改变你的观点,这并不好。

答案 2 :(得分:0)

  

使用Gson外部库将java-List发送到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文件必须包含在您的项目中并正确包含在您的html文件中。