将ResultSet从Servlet传递给JSP

时间:2014-11-20 18:10:11

标签: java jsp servlets el resultset

我想将结果集从Servlet传递到JSP页面,并在我的JSP页面中有它的值。

这是Servlet的代码:

protected void doPost (HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException
{
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    PrintWriter out = response.getWriter();
    Data select = new Data(username,password);
    try {
        Boolean result = select.Select(username, password);
        if (result) {
            ResultSet rset=select.SelectAll(username,password);
            request.setAttribute("user",rset);
            getServletConfig().getServletContext()
                    .getRequestDispatcher("/dashboard.jsp")
                    .forward(request,response);

        } else
            out.print("Please check your username and password");        
    } catch (Exception e) {
        out.print("There seems to be a exception" + e);
    }
}

此处调用的两个函数分别返回boolean值和ResultSet值 Select函数返回boolean值,其中SelectAll返回ResultSet

我的JSP代码如下所示:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
Username: <c:out value="$(user.username)"/> <br/>
Email:    <c:out value="$(user.email)"/>    <br/>
Contact:  <c:out value="$(user.contact)"/>  <br/>

2 个答案:

答案 0 :(得分:2)

继续使用结果集初始化对象User,该对象应具有getter和setter

ResultSet rset=select.SelectAll(username,password);
if (rset.next()){
  User user = new User();
  user.setUsername(rset.get("username"));
  user.setEmail(rset.get("email"));
  user.setContact(rset.get("contact"));
  request.setAttribute("user",user);
  getServletContext().getRequestDispatcher("/dashboard.jsp")
                    .forward(request,response);
}

答案 1 :(得分:2)

不要通过ResultSet!相反,请遵循DAO模式并使用将反映数据库中列的字段创建Java POJO类。通过ResultSet循环(while)从while(rs.next()) {...}提取数据,为先前创建的POJO类实例分配值,并将该实例添加到List(如果您想要传递多个用户)。返回列表(如果是多个用户)或只是一个实例(如果是单个用户)。

将对象列表设置为属性,并通过JSTL中的forEach JSP循环对其进行迭代(如果有多个用户)。