Model view controller 在没有JSTL的JSP中使用ResultSet对象
我想将我的查询结果(即ResultSet)传递给JSP,只是为了显示,因为我使用的是MVC框架 我的Servlet代码:Model view controller 在没有JSTL的JSP中使用ResultSet对象,model-view-controller,jsp,servlets,resultset,Model View Controller,Jsp,Servlets,Resultset,我想将我的查询结果(即ResultSet)传递给JSP,只是为了显示,因为我使用的是MVC框架 我的Servlet代码: Connection c=Connectivity.dbConnect(); PreparedStatement ps=c.prepareStatement("select role from login where userid=? and password=?"); ps.setString(1,userid); ps.setSt
Connection c=Connectivity.dbConnect();
PreparedStatement ps=c.prepareStatement("select role from login where userid=? and password=?");
ps.setString(1,userid);
ps.setString(2,pass);
ResultSet rs=ps.executeQuery();
if(rs.next())
{
if(rs.getString(1).equals("admin"))
{
ps=c.prepareStatement("select * from user where userid=?");
ps.setString(1,userid);
rs=ps.executeQuery();
Result r=ResultSupport.toResult(rs);
request.setAttribute("res",r);
rs.close();
c.close();
return mapping.findForward("us");//to User.jsp
}
}
我已经使用ResultSupport.toResult()将其转发到JSP(由“us”映射转发),但这需要JSP中的JSTL代码:
User.jsp-
<c:forEach var="data" items="${requestScope.res.rows}">
<h1>${data.userid}</h1>
<h2>${data.name}</h2>
<h2>${data.password}</h2>
<h2>${data.emailid}</h2>
</c:forEach>
${data.userid}
${data.name}
${data.password}
${data.emailid}
此外,如果我直接传递ResultSet,比如request.setAttribute(“ResultSet”,rs)代码>我将无法在JSP中关闭连接
这段代码工作得很好,但我不想使用JSTL/EL或列表,我想在JSP中使用scriplets来处理Servlet中的Result或ResultSet属性 您可以这样解决您的问题:
1) 在数据库操作类中,使用POJO从ResultSet中添加结果
Contacts myContact = new Contacts();
myContact.setOffice(rs.getString("office1"));
myContact.setMail(rs.getString("xx@xx.com"));
2) 然后使用列表存储结果
List<Contacts> myList = new ArrayList<Contacts>();
myList.add(myContact);
4) 在JSP中,获取列表,并根据需要对其进行迭代
ArrayList<Contacts> myList = (ArrayList<Contacts>) request.getAttribute("LIST");
for(Contacts obj: myList){
out.print(obj.getMail());
....
....
}
ArrayList myList=(ArrayList)request.getAttribute(“列表”);
用于(联系人对象:myList){
out.print(obj.getMail());
....
....
}
为什么。你为什么要这么做。“因为我在使用MVC框架?”但你只是想跳过M?为什么,不可能将表的视图部分转移到JSP并使用简单的scriplets?当然,这有点可能——这只是一个可怕的想法,在多个层次上。Scriptlet很糟糕。在JSP呈现期间保持结果集打开是不好的。我想结果至少更好;不知道为什么不能在scriptlet中使用结果。我也不知道你为什么要这么做,但那是另一个问题。
ArrayList<Contacts> myList = (ArrayList<Contacts>) request.getAttribute("LIST");
for(Contacts obj: myList){
out.print(obj.getMail());
....
....
}