java中的拦截器(登录)

题目要点:

如果登录了就跳转到首页,如果没有登录直接访问首页的话,就拦截无法访问,登录了就可以访问主页。

登录界面:

<%--
  Created by IntelliJ IDEA.
  User: Smile
  Date: 2018/11/12
  Time: 14:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<script src="/bootstrapjs/jquery-3.1.1.min.js"></script>
<lable>username</lable><input type="text" name="username">
<lable>password</lable><input type="password" name="pwd">
<button id="login">login</button>
<script>

    $(function(){
        $("#login").on("click",function () {
            console.log($("input[name='username']").val())
            $.ajax({
                    url:"/loginfilter",
                    data:{"username":$("input[name='username']").val(),"pwd":$("input[name='pwd']").val()},
                    type:"post",
                    dataType:"json",
                    success:function (data) {
                        console.log(data)
                        if(data==true){
                            window,location='/html/indexsess.html';
                        }else{
                            alert("用户名或密码错误");
                        }
                    },error:function (e) {
                        console.log(e)
                    }
                }
            )
        })
    })
</script>
</body>
</html>

首页:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<script src="/bootstrapjs/jquery-3.1.1.min.js"></script>
<body>
<i id="v"></i>
<script>
    $(function () {
        console.log("1111")
        $.ajax(
            {
                url:"/sure",
                type:"post",
                dataType:"json",
                success:function (data) {
                    console.log(data)
                    if(data==true){
                        $("#v").html("xxx你好")
                    }else{
                        $("#v").html("游客你好");
                    }
                },error:function (e) {
                    console.log(e)
                }
            }
        )
    })

</script>
</body>

</html>

servlet:

拦截器:

package userservlet.fileter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter(filterName = "LoginFilter",urlPatterns = {"/html/indexsess.html"})
public class LoginFilter implements Filter {
    public void destroy() {
        System.out.println("拦截器销毁");
    }

    //登录拦截:如果你是第一次登录的话,登录成功后跳转到主页
    //如果你没有登录的话,直接访问主页的话,会被拦截
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
       // System.out.println("111");
        HttpServletRequest request = (HttpServletRequest) req;
       // System.out.println(request);
        HttpSession session = request.getSession();
       // System.out.println(session);
      Object is=session.getAttribute("login");
        System.out.println(is);
        //判断你是否登录,如果登陆了,可以直接访问主页,如果没有登录的话访问主页的话,就会被拦截
      if("true".equals(is)){
          //System.out.println("333");
          request.getRequestDispatcher("/html/indexsess.html");
          //放过
          chain.doFilter(req, resp);
      }else{
          request.getRequestDispatcher("/html/loginfilter.jsp").forward(req,resp);
      }
        //System.out.println("222");
    }

    public void init(FilterConfig config) throws ServletException {
        System.out.println("初始化成功");
    }

}

猜你喜欢

转载自blog.csdn.net/W_violet/article/details/83994624