我开发了一个用于验证用户名和密码的示例登录页面。如果用户提供了正确的凭据,则页面将导航到其他页面,否则从servlet
返回一条消息到同一登录页面。
我在这里附上了示例code
:
第一JSP.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>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>`
</head>
<body>
<form action="Login" method="post">
<input type="text" name="Name"/><br>
<input type="password" name=Pass><br><br><br>
<input type="submit" value="submit"/><br>
<%if(request.getAttribute("message")!=(""))
out.println(request.getAttribute("message"));
else
out.println("");%>
<h1>Hi This is JSP sample code </h1>
<font color="blue" size="25">
<marquee>Please login to Work with JSP</marquee></font>
<%java.text.DateFormat df = new java.text.SimpleDateFormat("MM/dd/yyyy"); %>
<h1>Current Date: <%= df.format(new java.util.Date()) %> </h1>
</form>
</body>
</html>
servlet
代码,登录.java:
package com.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
public Login() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("Name");
String password = request.getParameter("Pass");
response.setContentType("text/html");
if(username.equals("sugan") && password.equals("raj")) {
response.getWriter().println("<html><body><Marquee>Welcome to JSP!!!</marquee></body></html>");
}
else {
String message = "OOps!!! Invalid Username/Password";
request.setAttribute("message", message);
request.getRequestDispatcher("/FirstJSP.jsp").forward(request, response);
}
}
}
它工作正常,但是在加载登录页面时,它会自动显示Null
。然后,如果用户提供了错误的凭据,则会显示实际消息。如何在运行时禁用Null
消息?
您使用 ==
将消息与空字符串进行比较。
首先,您的比较是错误的,因为消息将为空(而不是空字符串)。
其次,这是错误的,因为对象必须与equals()
进行比较,而不是与==
进行比较。
第三,这是错误的,因为你应该避免在JSP中使用scriptlet,而使用JSP EL,JSTL和其他自定义标记:
<c:id test="${!empty message}">
<c:out value="${message}"/>
</c:if>
你并没有真正使用 doGet() 方法。当您打开页面时,它会发出 GET 请求,而不是 POST。
尝试将 doPost() 更改为 service() 代替...然后,您将使用相同的方法来处理 GET 和 POST 请求。
。
如我所见,您正在使用 == 将消息与空字符串进行比较。
编写完整的代码非常困难,但我可以说出代码的流程 -首先,创建将返回连接的数据库类和方法inide。其次,创建一个 Servelet(ex-login.java)并将该数据库类导入该 servlet 上。第三,在 new 运算符的帮助下创建导入的数据库类的实例并调用该数据库类的连接方法。第四,creaet 准备语句和执行语句,并将此代码放入 try catch 块中进行异常处理。在 try 块中使用 if-else 条件根据成功或失败来导航登录页面。
我希望,它会帮助你。如果有任何问题,请还原。
尼基尔·帕哈里亚