zoukankan      html  css  js  c++  java
  • 登陆filter

    1.什么是fiter

      Filter就像一个一个哨卡,用户的请求需要经过Filter,并且可以有多个过滤器

    2.登陆filter作用

      防止盗链接(没登陆就可以访问后台)

    3.LoginFilter.java

    package com.zy.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;
    
    public class LoginFilter implements Filter{
    
        @Override
        public void destroy() {
        }
        @Override
        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
                throws IOException, ServletException {
         //doFilter方法的第一个参数req,是ServletRequest 类型的,不支持setCharacterEncoding,
       //所以要先强制转换为HttpServletRequest HttpServletRequest request
    = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)res; String uri = request.getServletPath();
         //静态资源放行
    if(uri.endsWith(".css")||uri.endsWith(".js")||uri.endsWith(".png")){ chain.doFilter(request, response); return; }
         //登陆url放行
    if(uri.endsWith("login.jsp")||uri.endsWith("login")){ chain.doFilter(request, response); return; } String loginname = (String)request.getSession().getAttribute("loginname");
         //session没账号缓存,不放行
    if(loginname == null){ response.sendRedirect("login"); return; }else{ chain.doFilter(request, response); return; } } @Override public void init(FilterConfig arg0) throws ServletException { } }

    4.web.xml配置

           <!-- 登陆过滤 -->
        <filter>
            <filter-name>LoginFilter</filter-name>
            <filter-class>com.zy.filter.LoginFilter</filter-class>
        </filter>
         
        <filter-mapping>
            <filter-name>LoginFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
  • 相关阅读:
    算法导论(第三版)Exercises2.1(插入排序、线性查找、N位大数相加)
    含铝馒头可能损伤儿童的智力
    每秒3600乘以100等于36万次售票解决方案
    namespace Measure
    public interface ICloneable
    VB.net 与线程
    C#调用VP 包含素材
    C# 定时器 一个简单 并且可以直接运行的Demo
    松下 激光位移传感器 API
    在Win7系统下, 使用VS2015 打开带有日文注释程序出现乱码的解决方案
  • 原文地址:https://www.cnblogs.com/yixtx/p/8359005.html
Copyright © 2011-2022 走看看