user3385250
user3385250

Reputation: 1

Servlet not setting attributes?

I have just started using connection pooling and can't seem to get anything to work, such as getting all modules that are in a database.

Here's my testconnectionservlet which must be the problem:

 package Servlet;


 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;

 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;

 import DTO.Module;
 import DAO.*;
 import Service.ModuleService;



 /**
  * Servlet implementation class checkLoginServlet
  */
 @WebServlet(urlPatterns={"/TestConnectionServlet"})
 public class TestConnectionServlet extends HttpServlet 
 {
private static final long serialVersionUID = 1L;

/**
 * @see HttpServlet#HttpServlet()
 */
public TestConnectionServlet() 
{
    super();
    // TODO Auto-generated constructor stub
}

/**
 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 */
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
     processRequest(request, response);
}

/**
 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 */
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    processRequest(request, response);
}

private void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{

        String forwardToJsp = "";
        HttpSession session = request.getSession();
        String clientSessionId = session.getId();

    //Check the 'action' parameter to see what the user wants...
    if ( request.getParameter("action") != null)
    {
        // Create a LoginCommand and execute it




        ModuleService mService = new ModuleService();
        if (request.getParameter("action") == "allModules") {
            List allModules = mService.getAllModules();
            session.setAttribute("theModulesNoOrder", allModules);
            forwardToJsp = "all-Modules.jsp";
        } else if (request.getParameter("action") == "allModulesAsc") {
            List allModulesAsc = mService.getAllModulesCodeAsc();
            session.setAttribute("theModulesAsc", allModulesAsc);
            forwardToJsp = "whatever.jsp";
        }
    }

    //Get the request dispatcher object and forward the request to the appropriate JSP page...
    //RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(forwardToJsp);
    //dispatcher.forward(request, response);

    //to stop UserActionServelet coming up in URL when logging in.
    //lines above were in it before
    response.sendRedirect(forwardToJsp);
}
 }

Anyone notice anything out of the ordinary?

When I do something such as this in a JSP I get a java.lang.NullPointerException, but shouldn't this be there from the servlet?:

    <%
        List<Module> modules;
        modules = (List)(request.getSession().getAttribute("theModulesAsc"));
        out.print(modules.size());
      %>

Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

Upvotes: 0

Views: 130

Answers (2)

David Levesque
David Levesque

Reputation: 22451

The attributes are not available in your JSP page because in the servlet you are redirecting to the JSP instead of forwarding to it. Redirecting causes a complete roundtrip to the browser which then calls your JSP page in a separate request, therefore losing any attribute you have set in the original request to the servlet.

It looks like you commented out the code doing a forward in your servlet (dispatcher.forward()) to replace it with response.sendRedirect(). Try reverting back to the forward.

Upvotes: 0

Jigar Joshi
Jigar Joshi

Reputation: 240996

change

if (request.getParameter("action") == "allModules") {

to use equals()

Upvotes: 2

Related Questions