对客户端有jdbc响应的servlet
我有一个数据库和房子,而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中的信息添加到此列表中?
你可以解决你的问题,正如前面的回答中吉德所说的那样。但是,如果使用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代码。我不推荐这样做,因为您会将视图细节与控件和模型代码合并。如果您打算在未来改变您的观点,这并不是很好。
将查询结果添加到某个List或自定义对象,并将其设置为请求对象中的属性。
request.setAttribute(“result”,result);
然后使用RequestDispatcher转发到下一页。
使用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文件正确。
什么是customObjResp?我应该在哪里粘贴这个jquery脚本? – user202822
@Panwo亲切地看到更新的答案,并且jquery脚本需要添加到你的r页面中,最后同样是你的body标签,
...... 。 –好的,你能解释更多细节,我更新问题 – user202822
你更喜欢前端jsp或纯html的技术? –
喜欢纯html,因为我不太明白jsp是如何工作的,当servlet发送给客户端时,jsp会转换为html吗?也许jsp会更好? – user202822
好的,等我给你解决。如何将房屋列表转换为html。 –