Java 打印方法不起作用?
这是我的密码 LoginController.java 包mvc.demo.controlJava 打印方法不起作用?,java,jsp,Java,Jsp,这是我的密码 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
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类的else块,我正在尝试在jsp文件上打印错误消息,当前“out.print”方法无法在我的login.jsp文件上反映。
请帮助我对这个问题进行排序,谢谢。您可以在请求属性中设置错误消息,并可以在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
${errorMsg}//在需要的地方打印
您可以在请求属性中设置错误消息,并可以在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
${errorMsg}//在需要的地方打印
如果您想在Jsp中打印错误消息,并首先在请求中设置错误消息
req.setAttribute("msg","error msg configure here");
现在,您可以通过使用EL表达式在jsp中获得相同的结果
${msg}
或者您可以通过使用脚本语言获得它
<%Object obj=request.getAttribute("msg");%>
将Obj键入字符串并使用此命令打印
<%=str%>
注意:-建议使用El表达式。如果您想在Jsp中打印错误消息并首先在请求中设置错误消息
req.setAttribute("msg","error msg configure here");
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);
}
}
}
现在,您可以通过使用EL表达式在jsp中获得相同的结果
${msg}
或者您可以通过使用脚本语言获得它
<%Object obj=request.getAttribute("msg");%>
将Obj键入字符串并使用此命令打印
<%=str%>
注意:-建议使用El表达式。我无法在代码中看到out.close()。最后必须关闭PrintWriter对象。我看不到代码中的.close()。最后必须关闭PrintWriter对象。首先,为什么需要在JSP上写任何东西,如果需要传递任何数据,可以以属性的形式设置它们,并可以在JSPrd=req.getRequestDispatcher(“/login.JSP”)中访问它们;再次在else块中检查这一行。我不知道在这一行之后OB将如何维护谢谢你的建议,但我想知道out.print()方法是如何工作的@Neerajthank you rehan您帮助我解决了这个问题。现在一切正常。首先,为什么您需要在JSP上写任何东西,如果您需要传递任何数据,您可以以属性的形式设置它们,并可以在JSPrd=req.getRequestDispatcher(“/login.JSP”)中访问它们;再次在else块中检查这一行。我不知道在这一行之后OB将如何维护谢谢你的建议,但我想知道out.print()方法是如何工作的@谢谢你,热翰,你帮我解决了这个问题,现在一切正常
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);
}
}
}