我制作了一个简单的登录应用。但是每当发送表单时,servlet都会收到空数据。
以下是登录页面
<body>
<form action="login">
Enter login Name : <input type="text" name="userName"/><br/>
Enter password : <input type="password" name="userPassword"/><br/>
<input type="submit" value="Log In"/>
</form>
以下是用于检查输入的变量值
的servlet代码@WebServlet("/login")
public class loginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public loginServlet() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = (String)request.getAttribute("userName");
String password = (String)request.getAttribute("userPassword");
System.out.print("in doGet method");
System.out.print(name+" "+password+" are these");
if(name!=null && password!=null){
System.out.print("in null method");
if(name=="admin" && password=="admin"){
// Cookie cookie = new Cookie("userName", name);
// response.addCookie(cookie);
// RequestDispatcher dispatch = request.getRequestDispatcher("success.jsp");
// dispatch.forward(request, response);
response.sendRedirect("success.jsp");
}
else{
System.out.print("in error method");
response.sendRedirect("error.jsp");
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
我正在使用System.out.print方法在Tomcat控制台中打印值。
答案 0 :(得分:5)
这些来自Request.getAttribute(String)
String name = (String)request.getAttribute("userName");
String password = (String)request.getAttribute("userPassword");
应调用Request.getParameter(String)
(根据Javadoc,将请求参数的值返回为String
)。像
String name = request.getParameter("userName");
String password = request.getParameter("userPassword");
此外,
if(name=="admin" && password=="admin"){
应该是
if (name.equals("admin") && password.equals("admin")) {
因为String
是Object
,您需要等效值(不是相同的引用)。
答案 1 :(得分:0)
而不是request.getAttribute("userName");
use request.getParameters("username")
;
也为密码做。
答案 2 :(得分:0)
问题是你是通过html表单发送你的数据,你不能根据请求设置属性,而是那些是参数。因此,而不是request.getAttribute()
尝试request.getParameter()
。
使用response.sendRedirect()
重定向到下一个视图也是一种很好的做法,但是如果您希望在下一个视图中获取以前的参数(用户名/密码),那么您将在此处丢失它。要获取这些详细信息,您可以使用RequestDispatcher
,也可以继续使用response.sendRedirect()
并使用会话使用session.setAttribute(<key>, <value>)
来处理详细信息。