我有一个带有房屋的数据库,以及带有<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中的信息添加到此列表中?
答案 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文件中。