首页 > 其他分享 >过滤器应用

过滤器应用

时间:2023-02-01 14:45:31浏览次数:41  
标签:登录 req user 应用 过滤器 import servlet response

需求:访问服务器资源时,需要先进行登录验证,如果没有登录,则自动跳转到登录页面

核心代码:

package com.itheima.web.filter;

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

/**
 * 登录验证的过滤器
 */

@WebFilter("/*")
public class LoginFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
        HttpServletRequest req = (HttpServletRequest) request;
        //判断访问资源路径是否和登录注册相关
        String[] urls = {"/login.jsp","/imgs/","/css/","/loginServlet","/register.jsp","/registerServlet","/checkCodeServlet"};
        // 获取当前访问的资源路径
        String url = req.getRequestURL().toString();

        //循环判断
        for (String u : urls) {
            if(url.contains(u)){
                //找到了
                //放行
                chain.doFilter(request, response);
                //break;
                return;
            }
        }


        //1. 判断session中是否有user
        HttpSession session = req.getSession();
        Object user = session.getAttribute("user");

        //2. 判断user是否为null
        if(user != null){
            // 登录过了
            //放行
            chain.doFilter(request, response);
        }else {
            // 没有登陆,存储提示信息,跳转到登录页面

            req.setAttribute("login_msg","您尚未登陆!");
            req.getRequestDispatcher("/login.jsp").forward(req,response);
        }


    }


    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }


}

  

 

标签:登录,req,user,应用,过滤器,import,servlet,response
From: https://www.cnblogs.com/popopopopo/p/17082519.html

相关文章

  • Dubbo 入门系列之快速部署一个微服务应用
    本文将基于DubboSamples示例演示如何快速搭建并部署一个微服务应用。背景Dubbo作为一款微服务框架,最重要的是向用户提供跨进程的RPC远程调用能力。如上图所示,Dubb......
  • 消费互联网后半场,超级应用强势崛起
    回顾过往的一年,全球国家形势演变复杂,我国需要在各行各业都集中资源,打造更具国际竞争力的创新土壤。于是乎,反垄断政策落地、用户存量争夺愈演愈烈……互联网人突然发现,以往基......
  • 应用部署初探:3个主要阶段、4种常见模式
    应用部署是一个将软件提供给用户的过程,通常包含配置环境、安装及测试等步骤。现如今,大部分企业在部署新的应用程序时,会至少自动化其中一些步骤。应用程序部署的策略会影响......
  • 应用部署初探:3个主要阶段、4种常见模式
    应用部署是一个将软件提供给用户的过程,通常包含配置环境、安装及测试等步骤。现如今,大部分企业在部署新的应用程序时,会至少自动化其中一些步骤。应用程序部署的策略会影响该......
  • ssh原理及应用
    SSH原理与运用(一):远程登录SSH原理与运用(一):远程登录SSH原理与运用(二):远程操作与端口转发SSH原理与运用(二):远程操作与端口转发mitm应用:python开源三方库:ssh-mitm......
  • 让人眼前一亮的应用「GitHub 热点速览」
    大开眼界的一期GitHub热门项目,类似Django存在的pynecone,搞定Windows、Office激活的Microsoft-Activation-Scripts,都让我的收藏夹蠢蠢欲动。最不能错过的应该是hy......
  • 单调栈及其应用
    目录单调栈简介伪代码应用应用1:Leetcode.496题目分析代码实现复杂度分析应用2:Leetcode.503题目分析代码实现应用4:Leetcode.2454题目分析代码实现应用4:Leetcode.739题目分析......
  • 应用容器引擎-Docker
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容......
  • 离线强化学习在序列决策中的应用
    从样本利用效率,看强化学习的分类on-policy:每次更新策略需要在重新收集数据,更新数据来自于当前策略,行为策略和目标策略是同一个策略off-policy:行为策略和目标策略不......
  • SQL Server 日常维护经典应用
    SQLServer日常维护常用的一些脚本整理。1.sqlserver开启clr权限:execsp_configure'clrenabled',1GORECONFIGUREGOALTERDATABASEHWMESTCSETTRUSTWORTHYON......