使用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,到这就完成了,下面是效果图:

填写表单->登录->退出登录
这里写图片描述
这里写图片描述
这里写图片描述
当验证不通过时:
这里写图片描述

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