2015-06-02 3 views
0

Вот мой кодМетод Out.Print не работает?

LoginController.java

пакет mvc.demo.control;

import java.io.IOException; 
    import java.io.PrintWriter; 
    import javax.servlet.RequestDispatcher; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    import mvc.demo.model.Authenticate; 


    public class LoginController extends HttpServlet { 
     private static final long SerialVersionUID=1L; 

     public LoginController() 
     { 
      super(); 
     } 

     @Override 
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
       throws ServletException, IOException { 
      String s1=req.getParameter("username"); 
      String s2=req.getParameter("password"); 
      RequestDispatcher rd=null; 
      Authenticate au=new Authenticate(); 
      String result=au.authorise(s1, s2); 
      if(result.equals("success")) 
      { 
       rd=req.getRequestDispatcher("/success.jsp");  
      } 
      else 
      { 
       //This is the point where i try to print error message on jsp. 
       PrintWriter out = resp.getWriter(); 
       out.print("Sorry UserName or Password Error!"); 
       rd=req.getRequestDispatcher("/login.jsp"); 
       rd.include(req, resp); 
      } 
      rd.forward(req, resp); 
     } 
    } 

login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
     pageEncoding="ISO-8859-1"%> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <title>Login Page</title> 
    </head> 
    <body> 
     <form method="post" action="LoginController" > 
     UserName: <input type="text" name="username"><BR><BR> 
     PassWord: <input type="password" name="password"><BR><BR> 
        <input type="submit" /> 
     </form> 
    </body> 
    </html> 

Пожалуйста, проверьте еще блок класса LoginController, где я пытаюсь напечатать сообщение об ошибке на моем файле JSP в настоящее время метод «out.print» не в состоянии отразить на мой файл login.jsp. Пожалуйста, помогите мне разобраться в этом вопросе. Спасибо заранее.

+0

Во-первых, почему вам нужно писать что-либо на JSP, если вам нужно передать любые данные, которые вы можете установить в форме атрибута, и можете получить доступ к ним в JSP –

+0

rd = req.getRequestDispatcher ("/ login.jsp"); снова проверьте эту строку в блоке else. Я смущен, как OB будет поддерживаться после этой строки. – rehan

+0

Спасибо за ваше предложение, но я хочу знать, как работает метод out.print(). @Neeraj –

ответ

1
import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import mvc.demo.model.Authenticate; 


public class LoginController extends HttpServlet { 

    private static final long SerialVersionUID=1L; 

    public LoginController() 
    { 
     super(); 
    } 

    @Override 
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 

     String s1=req.getParameter("username"); 
     String s2=req.getParameter("password"); 
     RequestDispatcher rd=null; 

     Authenticate au=new Authenticate(); 
     String result=au.authorise(s1, s2); 

     if(result.equals("success")) 
     { 
      rd=req.getRequestDispatcher("/success.jsp"); 

//The error was with this line 
      rd.forward(req, resp); 
     } 
     else 
     { 

      PrintWriter out = resp.getWriter(); 
      out.print("Sorry UserName or Password Error!"); 
      rd=req.getRequestDispatcher("/login.html"); 
      rd.include(req, resp); 

     } 

    } 

} 
2

Вы можете установить сообщение об ошибке в атрибут запроса и может принести его в JSP

String errorMsg = "UserName or Password is invalid !"; 
req.setAttribute("errorMsg", errorMsg); 
req.getRequestDispatcher("/login.jsp").forward(req, res); 

Теперь на вашем JSP

<h2>${errorMsg}</h2> // Print wherever you need it 
0

Если и хотите, чтобы напечатать сообщение об ошибке в Jsp и первый набор Ошибка. msg in request

 req.setAttribute("msg","error msg configure here"); 

и теперь вы можете получить то же самое в jsp, используя EL Expression.

${msg} 

или вы можете получить его с использованием языка сценариев.

<%Object obj=request.getAttribute("msg");%> 

напечатанный материал Obj в строку и печати с помощью этого

   <%=str%> 

Примечание: - Рекомендуется использовать выражение El.

1

Я не могу видеть out.close() в вашем коде. Вы должны закрыть объект PrintWriter в конце.

+0

спасибо @faheem –