2013-05-28 3 views
-1

Следующие два моих сервлета, где я хочу передать сеанс.Сбой передачи сеанса - сервлеты

Проблема заключается в том, что сеансовый сеанс выполняется, когда он переходит к сервлету SuccessPage, но не тогда, когда он переходит к сервлету сбоя.

Войти сервлет doGet() метод:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws  
ServletException, IOException{ 
    PrintWriter out=response.getWriter(); 
    response.setContentType("text/html"); 
    String userName=request.getParameter("userName"); 
    String userPass=request.getParameter("userPassword"); 
    String userRePass=request.getParameter("userRePassword"); 
    try{ 
     String query="Select VendorName from vendorinfo where VendorPass=?"; 
     connection1=Connection_Class.getInstance().getConnection(); 
     ptmt=connection1.prepareStatement(query); 
     ptmt.setString(1,userPass); 
     rs=ptmt.executeQuery(); 
     if(rs.next()&& userName.equalsIgnoreCase(rs.getString("VendorName"))){ 
     HttpSession session=request.getSession(true); 
     session.setAttribute("loggedVendor",rs.getString(1)); 
     //this is working fine...im able to get the userName in the next servlet 
     ServletContext context = getServletContext(); 
     RequestDispatcher dispatcher=context.getRequestDispatcher("/SuccessPage"); 
     dispatcher.forward(request,response); 
     } 
     else{ //this is not working .....whats the problem here ? 
      request.setAttribute("wrongUser",userName); 
      ServletContext context=getServletContext(); 
      RequestDispatcher dispatcher=context.getRequestDispatcher("/Failure"); 
      dispatcher.forward(request,response); 
     } 
    } 
    catch(SQLException e){ 
     e.printStackTrace(); 
    } 
} 

Отказ сервлет doGet() метод:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws 
ServletException, IOException { 
/*all i want to do here is that I want to get the userName from the previous servlet but its 
not displaying that and its displaying null */ 
    response.setContentType("text/html"); 
    PrintWriter out=response.getWriter(); 
    out.println("<body bgcolor=#F3EEF0><h1>"); 
    out.println("<center>"); 
    HttpSession session=request.getSession(false); 
    out.println("This is a failure page"); 
    out.println(session.getAttribute("wrongUser")); 
    out.println("</center></h1></body>"); 
} 

Есть ли что-то не так в коде?

ответ

1

Вы размещаете данные с ключом «wrongUser» в запросе, а не сеанс в первом сервлета:

request.setAttribute("wrongUser",userName); 

и извлечения его из сессии в Failure Servlet:

session.getAttribute("wrongUser"); 

Используйте форму либо «сеанс» в обоих местах, либо «запрос» в обоих местах. Поэтому, если вы используете request.setAttribute(), используйте request.getAttribute(). Если вы используете session.setAttribute(), используйте session.getAttribute().

Рекомендация: Используйте запрос, чтобы вы не загрузили сеанс без необходимости с большим количеством произвольных действий. Вы не нуждаетесь в этом значении, выходящем за рамки этого цикла запроса/ответа.

Смежные вопросы