4

我开发了一个用于验证用户名和密码的示例登录页面。如果用户提供了正确的凭据,该页面将导航到其他页面,否则将一条消息从该页面返回servlet到相同的登录页面。

我在code这里附上了样本:

FirstJSP.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代码,Login.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在运行时禁用消息?

4

3 回答 3

4

您正在使用 . 将消息与空字符串进行比较==

首先,您的比较是错误的,因为消息将为空(而不是空字符串)。

其次,这是错误的,因为 Objects 必须与equals()而不是与进行比较==

第三,这是错误的,因为您应该避免在 JSP 中使用 scriptlet,而应使用 JSP EL、JSTL 和其他自定义标签:

<c:id test="${!empty message}">
    <c:out value="${message}"/>
</c:if>
于 2012-06-11T13:42:32.330 回答
0

您并没有真正使用 doGet() 方法。当您打开页面时,它会发出 GET 请求,而不是 POST。

尝试将 doPost() 更改为 service() ...然后您使用相同的方法来处理 GET 和 POST 请求。

...

于 2012-06-11T13:39:16.133 回答
0

如我所见,您正在使用 == 将消息与空字符串进行比较。

编写完整的代码非常困难,但我可以告诉代码流 - 首先,在将返回连接的内部创建 db 类和方法。其次,创建一个 serverlet(ex-login.java) 并将该 db 类导入该 servlet。第三,在 new 运算符的帮助下创建导入的 db 类的实例并调用该 db 类的连接方法。第四,创建prepared statement & execute statement & 将此代码放入try catch块中进行异常处理。在try块中使用if-else条件根据成功或失败导航您的登录页面。

我希望,它会帮助你。如果有任何问题,请恢复。

尼基尔·帕哈里亚

于 2014-11-19T05:15:22.650 回答