Servlet Session Filter ajax 登录功能

1、login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../resource/layUI/layui-v2.5.4/layui/css/layui.css">
</head>
<body layadmin-themealias="default">
<style>
    body{
        text-align: center;
    }
    #LAY-user-login{
        width:30%;
        height:30%;
        text-align: center;
        border:1px solid silver;
        padding:40px 100px;
        margin: 50px auto;
    }
</style>
<div class="layadmin-user-login layadmin-user-display-show" id="LAY-user-login" style="display: block;">

    <div class="layadmin-user-login-main">
        <div class="layadmin-user-login-box layadmin-user-login-header">
            <h2>登录</h2>
        </div>
        <div class="layadmin-user-login-box layadmin-user-login-body layui-form">
            <div class="layui-form-item">
                <label class="layadmin-user-login-icon layui-icon layui-icon-username" for="LAY-user-login-username"></label>
                <input type="text" name="username" id="LAY-user-login-username" lay-verify="required" placeholder="用户名" class="layui-input">
            </div>
            <div class="layui-form-item">
                <label class="layadmin-user-login-icon layui-icon layui-icon-password" for="LAY-user-login-password"></label>
                <input type="password" name="password" id="LAY-user-login-password" lay-verify="required" placeholder="密码" class="layui-input">
            </div>
            <div style="height: 20px">
            </div>
            <div class="layui-form-item">
                <button onclick="login()" class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="LAY-user-login-submit">登 入</button>
            </div>
        </div>
    </div>

</div>
<script src="../resource/jquery/jquery-3.4.1.min.js"></script>
<script src="../resource/layUI/layui-v2.5.4/layui/layui.all.js"></script>
<script>
    function login() {
        var username = $("#LAY-user-login-username").val();
        var password = $("#LAY-user-login-password").val();
        $.ajax({
            type:"post",
            url:"/LoginServlet",
            data:{
                "username":username,
                "password":password
            },
            success:function (result) {
                if(result=="1"){
                    window.location.href="http://localhost:8080/index.html"
                }else{
                    alert("登录失败!")
                }
            }
        });
    }
</script>
<style id="LAY_layadmin_theme">.layui-side-menu,.layadmin-pagetabs .layui-tab-title li:after,.layadmin-pagetabs .layui-tab-title li.layui-this:after,.layui-layer-admin .layui-layer-title,.layadmin-side-shrink .layui-side-menu .layui-nav>.layui-nav-item>.layui-nav-child{background-color:#20222A !important;}.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a{background-color:#009688 !important;}.layui-layout-admin .layui-logo{background-color:#20222A !important;}</style><div class="layui-layer-move"></div></body>
</html>

2、LoginServlet

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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "LoginServlet",value = "/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        HttpSession session = request.getSession();
        if(username!=null&&password!=null&&username.equals("admin")&&password.equals("123456")){
            session.setAttribute("username",username);
            session.setAttribute("password",password);
            response.getWriter().print("1");
        }else {
            response.getWriter().print("0");
        }
    }
}

3、closeLogin()

<li class="layui-nav-item"><a href="javaScript:closeLogin();">退了</a></li>


    function closeLogin() {
    $.ajax({
        type:"post",
        url:"CloseLoginServlet",
        data:{
            "close":"close"
        }
    });
    window.location.href="http://localhost:8080/pages/login.html";
}

4、CloseLoginServlet

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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(name = "CloseLoginServlet",value = "/CloseLoginServlet")
public class CloseLoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        session.setAttribute("username","");
        session.setAttribute("password","");
    }
}

5、successFilter(可以定义多个Filter,在web.xml里定义再创建Filter类,比如完成统一设置编码的功能等)

import java.io.IOException;
 
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class successFilter implements Filter{
//建立一个过滤器对象用于实现对success.jsp页面当中的请求信息进行过滤操作
	@Override
	public void destroy() {
		System.out.println("进行过滤器对象的销毁操作");
	}
 
	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
		System.out.println("执行过滤操作");
		HttpServletRequest request=(HttpServletRequest)req;//进行request对象的强制转化
		HttpServletResponse response = (HttpServletResponse)res;
		HttpSession session=request.getSession();//通过Httprequest对象来进行session对象的获取操作
		if(session.getAttribute("username")==null ||
				!session.getAttribute("username").equals("admin")) {
			response.sendRedirect("http://localhost:8080/pages/login.html");
		}
		System.out.println("过滤权限转交之前");
		chain.doFilter(req, res);//进行控制权限的转交操作
		System.out.println("过滤权限转交之后");
	}
 
	@Override
	public void init(FilterConfig arg0) throws ServletException {
		System.out.println("进行过滤器对象的初始化操作:");
	}
	
}

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <filter>
    <filter-name>successFilter</filter-name>
    <filter-class>filter.successFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>successFilter</filter-name>
    <url-pattern>/index.html</url-pattern>
  </filter-mapping>
</web-app>

版权声明:本文为weixin_41879646原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。