JSP&Servlet完成登錄頁面

JSP&Servlet完成登錄頁面

先給出項目文件結構,方面理解後面路徑的寫法
在這裏插入圖片描述
1.web.xml代碼

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>servlet.LoginServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/servlet/LoginServlet</url-pattern>
<!--        注意:這裏servlet文件的地址前要加上  / 號!!!-->
    </servlet-mapping>

<!--    更改默認的首頁地址,用welcome-file-list-->
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

2.login.js代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login Page</title>
</head>
<body>
<%--    注意:jsp跳轉到servlet時,servlet文件的地址要和web.xml中的url-pattern地址相同--%>
<%--         但是前面沒有 /--%>
    <form action="servlet/LoginServlet" method="post">
        <table>
            <tr>
                <td>Username:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>Password</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td><input type="submit" value="login"></td>
            </tr>
        </table>
    </form>
</body>
</html>

3.LoginServlet.java代碼
(這裏用戶名和密碼都直接寫死在servlet中了)

package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        if("Tom".equals(username)&&"12345678".equals(password)){
            request.getRequestDispatcher("/LoginSucc.jsp").forward(request,response);
        }
        else{
            request.getRequestDispatcher("/LoginFailed.jsp").forward(request,response);
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

4.LoginSucc.jsp代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login successfully</title>
</head>
<body>
<%
    String username = request.getParameter("username");
%>
    <div>
        <p>Login successfully! Welcome back,<%=username%>.</p>
    </div>
</body>
</html>

5.LoginFailed.jsp代碼

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login failed</title>
</head>
<body>
    <p>Login failed! Please check your username or password and try again.</p>
    <a href="../login.jsp">login page</a>
<%--   法一: 注意,這裏地址最好回到上一級目錄,再找login.jsp。--%>
<%--         因爲該頁面是由LoginServlet.java跳轉過來的,所以當前目錄是在servlet下面,但是jsp文件不在servlet下面,所以要返回上一級才找的到jsp--%>
<%--   法二: <a href="/login.jsp">login page</a>--%>
<%--         直接根目錄下找login.jsp--%>
</body>
</html>

上面的代碼是由純jsp完成登錄改過來的
具體有幾點改動以及寫代碼思路如下
1.總體思路:
寫首頁login.jsp——>寫LoginServlet.java處理首頁發過的數據,並且根據不同情況跳轉到登錄成功、失敗頁面——>寫LoginSucc.jsp,提示登錄成功,並且顯示當前用戶的用戶名——>寫LoginFailed.jsp,直接提示登錄錯誤,並且給一個首頁鏈接返回

2.將dologin.jsp中的代碼直接放到LoginServlet中,就不再用jsp腳本的方式了

3.增加了登錄成功頁面中,顯示用戶名的部分。採用jsp腳本獲取LoginServlet.java傳過來的數據,再使用jsp表達式顯示用戶名信息

4.利用welcome-file-lis將默認的首頁index.jsp,改爲了login.jsp

5.一定要注意各文件間跳轉路徑的不同書寫方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章