user1761043
user1761043

Reputation: 13

Passing ResultSet from Servlet to JSP

I want to pass result set from Servlet to JSP page and have its value there in my JSP page.

Here is the code of the 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);
    }
}

The two function called here returns boolean value and ResultSet values respectively Select function returns boolean value where as SelectAll returns ResultSet.

My JSP code looks like this:

<%@ 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/>

Upvotes: 1

Views: 5158

Answers (2)

Branislav Lazic
Branislav Lazic

Reputation: 14806

Do not pass ResultSet! Instead, follow DAO pattern and create Java POJO class with fields that will reflect columns in your database. Extract data from ResultSet via while loop (while(rs.next()) {...}), assign values to your previously created instance of POJO class and add that instance to List (in case you want to pass multiple users). Return list (in case of multiple users) or just an instance (in case of single user).

Set list of objects as an attribute and iterate over it via JSTL forEach loop in your JSP (in case of multiple users).

Upvotes: 2

Roman C
Roman C

Reputation: 1

To proceed with the resultset initialize the object User, that should have getters and setters

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);
}

Upvotes: 2

Related Questions