問題描述
這一篇講到的問題是上一篇文章的下半部分。上一篇已經把資料存儲到資料庫中了,本篇文章将要實作:
1.servlet從資料庫中讀取資料并存為JavaBean對象,插入到list中,然後将list插入到session,将請求轉發到jsp;
2.jsp讀取session裡面的list,把list中的資料顯示在一個表格上。
解決過程
1.servlet擷取資料庫資料比較容易,存為JavaBean對象:用接收到的資料庫資料執行個體化一個JavaBean對象。然後把這些對象插入到list中,用setAttribute的方式将list插入session。
2.可用el、jstl在jsp中顯示session中的list,但是我的機子一直調試不成功,是以采用了正常的get方法讀取資料。原本糾結了很久要用什麼類型的變量存取session中的list,後來發現 “它是什麼就用什麼去讀”。在jsp用**List< Msgjb >**讀取。
主要代碼
1.servlet讀取并插入session:
List< Msgjb > getData()類
List<Msgjb> msglist=new ArrayList<>();
Connection conn=DBConfig.getConnection();
sql="select * from message";
ResultSet rs =null;
PreparedStatement state = conn.prepareStatement(sql);
rs=state.executeQuery();
while(rs.next()){
Msgjb msg=new Msgjb();
msg.setName(rs.getString("username"));
msg.setText(rs.getString("content"));
msglist.add(msg);
}
在doGet中:
HttpSession session=request.getSession(true);
List<Msgjb> msglist=new ArrayList<>();
msglist=getData();
session.setAttribute("msglist", msglist);
2.jsp顯示session中的list
<table id="tBody" border="1" cellspacing="0" cellpadding="0">
<%
List<Msgjb> list=(List)session.getAttribute("msglist");
for(int i=0;i<list.size();i++){
Msgjb ms=list.get(i);
%>
<tr>
<td><%=ms.getName() %></td>
<td><%=ms.getText() %></td>
</tr>
<%
}
%>
</table>
接下來再把el、jstl好好琢磨一下。