使用Session完成用戶登錄/註銷

*思路:
1、獲取表單提交數據
2、與後臺數據庫校驗用戶名密碼是否存在且正確
3、校驗完成後,設置session,跳轉到首頁
4、註銷,刪除session,跳轉到登錄頁面*
目錄結構:
這裏寫圖片描述
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_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>session</servlet-name>
        <servlet-class>ser.david.SessionDemo.SessionDemo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>session</servlet-name>
        <url-pattern>/session</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>delSession</servlet-name>
        <servlet-class>ser.david.SessionDemo.DelSession</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>delSession</servlet-name>
        <url-pattern>/delSession</url-pattern>
    </servlet-mapping>

</web-app>

步驟:

1、寫表單頁面index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/session" method="post">
    用戶名:<input type="text" name="username"> <br/>
    密碼:<input type="text" name="password"><br/>
    <input type="submit" value="登錄">
</form>
</body>
</html>

2、模擬數據庫、新建User類,DB類

User類:

package ser.david.SessionDemo;

public class User {
    private String username;
    private String password;
    public User() {
        super();
    }
    public User(String username, String password) {
        super();
        this.username = username;
        this.password = password;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}

DB類:

package ser.david.SessionDemo;

import java.util.ArrayList;
import java.util.List;

class DB {
    public static List list = new ArrayList();
    static {
        list.add(new User("aaa", "123"));
        list.add(new User("bbb", "123"));
        list.add(new User("ccc", "123"));
    }
    public static List getList() {
        return list;
    }
}

3、新建SessionDemo,獲取表單數據並與數據庫比對。。。成功後設置session並跳轉到首頁

package ser.david.SessionDemo;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

public class SessionDemo extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        List<User> list = DB.getList();
        for (User user : list) {
            if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
                request.getSession().setAttribute("user", user);
                response.sendRedirect("/index.jsp");
                return;
            }
        }
        out.print("用戶名或密碼錯誤");
    }

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

}

4、新建首頁index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  歡迎您:${user.username}<a href="/delSession">退出登錄(刪除session)</a>
  </body>
</html>

5、新建DelSession完成註銷,刪除session,跳轉到登錄頁面

package ser.david.SessionDemo;

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

public class DelSession extends HttpServlet {

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

        HttpSession session=request.getSession();
        if (session==null){
            response.sendRedirect("/index.html");
            return;
        }
        session.removeAttribute("user");
        response.sendRedirect("/index.html");
    }

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

ok,到這就完成了,下面是效果圖:

填寫表單->登錄->退出登錄
這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述
當驗證不通過時:
這裏寫圖片描述

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