Filter实际应用--检查用户是否登录的过滤器

来源:互联网 发布:淘宝助手历史版本下载 编辑:程序博客网 时间:2024/05/17 10:04

a.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>A</title></head><body>   <h1>AAAAAA</h1><a href="list.jsp">return...</a></body></html>
b.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>B</title></head><body>   <h1>BBBBB</h1><a href="list.jsp">return...</a></body></html>
c.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>C</title></head><body>   <h1>CCCCCC</h1><a href="list.jsp">return...</a></body></html>
d.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>D</title></head><body>   <h1>DDDDDD</h1><a href="list.jsp">return...</a></body></html>
list.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Title</title></head><body>    <a href="a.jsp">AAA</a>    <a href="b.jsp">BBB</a>    <a href="c.jsp">CCC</a>    <a href="d.jsp">DDD</a></body></html>
login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>LOGIN</title></head><body>   <form action="dologin.jsp" method="post">       name:<input type="text" name="name">       <input type="submit" value="submit">   </form></body></html>
dologin.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head>    <title>Title</title></head><body>   <% Const.NAME=request.getParameter("name");%></body></html>
const:

package com.sa.util;public class Const {    public static  String NAME="";    public static final String OKURL="/pages/a.jsp,/pages/list.jsp,/pages/login.jsp,/pages/dologin.jsp";}

loginFilter:

package com.sa.filter;import com.sa.util.Const;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebFilter(filterName = "LoginFilter")public class LoginFilter implements Filter {    public void destroy() {    }    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {        //1.获取url        ///1012/pages/a.jsp        String uri=((HttpServletRequest)req).getRequestURI();        //http://localhost:8080/1012/pages/a.jsp        String url=((HttpServletRequest)req).getRequestURL().toString();        ///pages/a.jsp        String path=((HttpServletRequest) req).getServletPath();        //System.out.println(uri);        //System.out.println(url);        //System.out.println(path);        //2.首先检查url是否需要登录检查        if(Const.OKURL.contains(path)){           //包括,放行            System.out.println(1);            chain.doFilter(req, resp);            return;        }        //3.需要登录检查的url是否已经登录        if(!Const.NAME.equals("")&&Const.NAME !=null){            //如果name不为空,则放行            System.out.println(2);            chain.doFilter(req, resp);            return;        }        //4.如果没有登录,则需要重定向登录页        System.out.println(3);        ((HttpServletResponse)resp).sendRedirect("login.jsp");    }    public void init(FilterConfig config) throws ServletException {    }}

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">    <filter>        <filter-name>LoginFilter</filter-name>        <filter-class>com.sa.filter.LoginFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>LoginFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping></web-app>

功能描述:除了const中的OKURL之外,其他的所有访问都需要进行登录检查,如果没有登录,则重定向到login.jsp,如果已经登录,则可以访问。
开始测试:

①:进入a.jsp:


②:返回list.jsp:


③:尝试进入b.jsp,发现无法进入,直接重定向到login.jsp:


④:输入name,登录:


⑤:再次尝试登录b.jsp:








原创粉丝点击