JSP中filter过滤器验证用户登录

OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation 电磁线圈组驱动经典系统,可以作为参考。 OctoMag: 用于5自由度无线微操作的一个电磁铁系统 OctoMag: An Electromagnetic System for 5-DOF Wireless Micromanipulation [1] Paper Link Authors: J. J. Abbott, etc. 2010, TRO IEEE Transactions on Robot... 阅读详情

JSP中filter过滤器验证用户登录

现在JSP使用越来越广泛了,尤其是很多政府的网站都采用了JSP技术,其功能强大且安全。
初学者很多有这么个问题,就是,网站的一个权限设置,比如登录用户可以查看哪些页面,而游客又有权限可以看哪些内容呢?
JSP是强大的,但其代码还是相对繁琐的,其实用一个过滤器(filter)就可以实现这个功能了。
以下为UserFilte的代码:
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.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import User;
import UserDAO;
import SessionUtils;

public class UserFilter implements Filter
{

        
        String nofilter;
        String nofilterFiles[];
        String sendRedirect;
        public void destroy()
    {
          
            
    }

        public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException
    {
                
                HttpServletRequest request=(HttpServletRequest)req;
                HttpServletResponse response=(HttpServletResponse)res;
                String path=request.getServletPath();
                //System.out.println(path);
                if(isInArray(path,nofilterFiles))
                {
                        chain.doFilter(request, response);
                }
                else
                {        
                        if(checkUser(request, response))
                        {
                                chain.doFilter(request, response);
                        }
                        else
                        {
                                response.sendRedirect(sendRedirect);
                                return ;
                        }
                }

    }
        
        private boolean isInArray(String path,String nofilterFiles[])
        {
                for (int i = 0; i < nofilterFiles.length; i++) {
                        String nofilterFile=nofilterFiles;
                        if(nofilterFile.equals(path))
                        {
                                return true;
                        }
                }
                return false;
        }

        private boolean checkUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        
                checkCookieAddSession(request, response);
                
                HttpSession session=request.getSession(false);//如果不存在返回空
                if(session==null)
                {
                        return false;
                }                
                Object obj=session.getAttribute(SessionUtils.USER_NAME);
                if(obj==null)
                {
                        return false;
                }
                return true;
        }
        
        
        public boolean checkCookieAddSession(HttpServletRequest request, HttpServletResponse response)
        {
                Cookie []cookies=request.getCookies();
                
                if(cookies==null || cookies.length==0)
                {
                        return false;
                }
                String userName=getCookieValue(cookies, "user");
                String password=getCookieValue(cookies, "password");
                
                //System.out.println("userName="+userName + " password="+password );
                if(userName==null || password==null)
                {
                        return false;
                }                
                if(!UserDAO.checkUser(userName, password))
                {
                        return false;
                }                
                
                User u=UserDAO.getUserByName(userName);        
                HttpSession session=request.getSession();//如果不存在就创建
                session.setAttribute(SessionUtils.USER_NAME, u);
                
                return true;
                
        }

        public void init(FilterConfig config) throws ServletException
    {                
                nofilter=config.getInitParameter("nofilter");
                nofilterFiles=nofilter.split(",");
                sendRedirect=config.getInitParameter("sendRedirect");
                //System.out.println(Arrays.asList(nofilterFiles));
    }
        
        
        /**
         * @param cookies 所有cookie
         * @param name cookie的名称
         * @return cookie的值 如果cookie不存在返回null
         */
        public String getCookieValue(Cookie cookies[],String name)
        {
                for (int i = 0; i < cookies.length; i++)
        {
                Cookie cookie=cookies;
                if(cookie.getName().equals(name))
                {
                        return cookie.getValue();
                }
        }
                return null;
                
        }
}
这里还需要几个其他的类,一个是User类,一个是UserDAO,是User类操作数据库交的一个类,还有一个是操作session的,我给出这个工具类的代码,另外2个我想都会有吧?
以下为SessionUtils类的具体代码:
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import  User;
import  UserDAO;

public class SessionUtils
{
        final public static String USER_NAME="com.niit.user";
        
        static public User getUser(HttpServletRequest request)
        {
                Object obj=request.getSession().getAttribute(USER_NAME);
                User user=(User)obj;
                return user;
        }
        
        
        /**
         * 添加一个Session到request中
         * @param request
         * @param name
         */
        static public void addSession(HttpServletRequest request,String name)
        {
                HttpSession session=request.getSession();//如果不存在就创建                        
                User u=UserDAO.getUserByName(name);
                session.setAttribute(USER_NAME, u);
        }
        
        /**
         * 让session失效
         * @param request
         */
        static public void removeSession(HttpServletRequest request)
        {
                HttpSession session = request.getSession();
                session.removeAttribute(USER_NAME);
                session.invalidate();
        }
        
        /**
         * 增加cookie
         * @param response
         * @param user
         */
        static public void addCookies(HttpServletResponse response,User user)
        {
                
                Cookie userCookie=new Cookie("user", user.getUserName());
                Cookie passwordCookie=new Cookie("password", user.getPassword());
                
                userCookie.setMaxAge(60*60*24*365*2);
                passwordCookie.setMaxAge(60*60*24*365*2);        
                
                response.addCookie(userCookie);
                response.addCookie(passwordCookie);
        }
        
        /**
         * 删除cookie
         * @param response
         */
        static public void removeCookies(HttpServletResponse response)
        {
                
                Cookie userCookie=new Cookie("user", "");
                Cookie passwordCookie=new Cookie("password", "");
                
                userCookie.setMaxAge(0);
                passwordCookie.setMaxAge(0);        
                
                response.addCookie(userCookie);
                response.addCookie(passwordCookie);
        }        
}
下面就是配置web.xml文件了,相应配置如下:
<filter>
                <filter-name>UserFilter</filter-name>
                <filter-class>com.filter.UserFilter</filter-class>
                <init-param>
                        <param-name>nofilter</param-name>
                        <param-value>/login.jsp,/loginBack.jsp,/error.jsp,/reg.jsp,/regBack.jsp,/logout.jsp,/index.jsp</param-value>  
//这里设置的是未登录用户也可以浏览的页面,一般设置你的注册、登录、错误页还有主页等就可以
                </init-param>
                <init-param>
                        <param-name>sendRedirect</param-name>
                        <param-value>login.jsp</param-value>
                </init-param>                
        </filter>
        <filter-mapping>
                <filter-name>UserFilter</filter-name>
                <url-pattern>*.jsp</url-pattern>
//这里是映射,你要对什么后缀的文件过滤?可以改为*.do等。
        </filter-mapping>
把这段代码复制到
<web-app></web-app>
之间就可以了。当然这不是很好的写法,一般工具类最好是不依靠用户自己写的类,这里只是浅点一下,不到之处请大家批评指正。
芯片标称具备8kVESD能力却在8kV测试中失效? 芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异: 阅读详情

相关推荐

LS-DYNA中的流固耦合

在LS-DYNA中对流固耦合问题的求解提供了两种方法,ALE流固耦合和基于ICFD的流固耦合。本文将对两种方法的各自特点进行分析。 ALE方法的流固耦合 适用范围 ALE求解器主要用于层流。ALE求解器也不是完全的NS求解器,因此不考虑边界层的影响,比如阻力。流体粘性效应仅通过材料模型获得,也就是*mat_null的MU。ale求解器是为了求解高压高速度梯度的短时问题而开发的。该求解器并不适用于求解低压力梯度问题比如声学,也不适用于长时间问题(秒的尺度甚至更长)。时间的限制是显式时...

m0_69812055的博客 8557

登录验证---过滤器(Fileter)

一.案例--登录验证 * 需求: 1. 浏览器访问case案例(服务器)的资源时。验证其是否登录 2. 如果登录了,则直接放行。 3. 如果没有登录,则跳转到登录页面,提示"您尚未登录,请先登录"。 二.功能分析 三.代码的编写 由于前面的登录页面已经完成(前几篇博客),所以我们需要做的就是编写一个Filter类,来过滤用户通过浏览器访问服务器的页面,增强其功能。 过滤器首...

笼中鸟 3350

深入解析Android14应用安装权限:从声明到授予的完整适配指南

本文深入解析Android14应用安装权限的适配方法,重点介绍了从权限声明到授予的完整流程。与Android13相比,Android14在权限管理机制上进行了重要调整,特别是通过AppOpsManager实现权限的对象化封装。文章详细讲解了权限声明的基础配置、Framework层适配方案、运行时权限授予方法以及常见问题排查指南,帮助开发者高效完成Android14权限适配。

o9p0q1的博客 696

Filter过滤器实现登录验证

对该项目进行补充,当客户端发送请求时,验证用户是否登录 https://editor.youkuaiyun.com/md/?articleId=107250156 需求: 未登录状态下请求服务器端,请求将被拦截,跳转至登录页面,并提示账户未登录 对登录请求以及页面资源加载请求进行放行 实现: 使用注解拦截所有请求@WebFilter("/*") 将请求强制转换为HttpServletRequest类型 获取请求资源路径 判断请求是否属于放行资源 通过request请求的session对象的getAttribu

qq_44275894的博客 1万+

Intel SGX Explained

计算机中最主要的资源是CPU和内存,由操作系统和虚拟管理系统等系统软件来管理这些资源。

hanqdi_的博客 3457

告别点不亮!STM32F103驱动HT1621段码屏的常见坑点与调试心得

本文详细解析了STM32F103驱动HT1621段码屏的五大常见问题及解决方案,包括硬件连接、时序控制、RAM地址映射等关键难点。通过实测数据和代码示例,帮助开发者快速排查显示异常问题,提升驱动开发效率。特别针对HT1621与STM32F103的兼容性问题提供了专业调试建议。

weixin_30925435的博客 381

使用Filter实现用户自动登陆

【主要实现步骤】 1.编写User类 在chapter08项目中创建cn.itcast.chapter08.entity包,在该包中编写User类,该类用于封装用户信息,代码如下 package cn.itcast.chapter08.entity; public class User { private String username; private String password; public String getUsername() { return username; } publ

weixin_55680181的博客 1814

RM机器人麦轮底盘实战:从零搭建到PID调参全记录(附避坑指南)

本文详细记录了RM机器人麦轮底盘从零搭建到PID调参的全过程,涵盖硬件组装、开发环境搭建、底盘解算和PID调参等关键步骤,并附有实用的避坑指南。特别针对麦轮控制、底盘解算和电机调试等核心问题提供了专业解决方案,帮助开发者快速提升机器人性能。

bush的博客 379

011-Filter 过滤器:判断用户是否登录条件、三种工作流程、浏览器缓存,ServletContext 对象的2种获取方式、过滤器链的执行顺序、三种拦截路径

1、Filter 什么是过滤器 1、Filter 过滤器它是 JavaWeb 的三大组件之一。三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤器 2、Filter 过滤器它是 JavaEE 的规范。也就是接口 3、Filter 过滤器它的作用是:拦截请求,过滤响应。 拦截请求常见的应用场景有: 1、权限检查 2、日记操作 3、事务管理 ……等等 2、Filter 的初体验 要求:在你的 web 工程下,有一个 admin 目录。这个 admin 目录下的所有资源(html

aa35434的博客 1171

告别色差!用Python+TCS34725颜色传感器实现精准色彩还原(附完整校准代码)

本文详细介绍了如何利用Python和TCS34725颜色传感器实现专业级色彩还原方案。通过双阶校准法(白光校准和黑电平校准)和进阶的光照自适应技术,解决传感器原始数据不准的问题,并提供完整的校准代码和实战案例,帮助开发者实现ΔE<3的高精度色彩识别。

weixin_30836759的博客 211

SAP BTP ABAP environment 集成本地系统实践:Cloud Connector、Connectivity service 与隧道通信全解析

摘要: 随着ABAP开发者向云端扩展业务逻辑,如何安全访问企业内网SAP系统成为关键问题。本文基于SAP官方文档,解析通过Cloud Connector和Connectivity service实现云端ABAP环境与本地系统集成的方案。 架构上分为四个角色:ABAP环境、Connectivity服务、Cloud Connector和内网系统。Cloud Connector作为内网出口,通过TLS隧道主动连接云端,避免防火墙开放入站端口。Connectivity服务则作为子账户级“总机”,自动路由请求。 实施

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 314

过滤器检验用户是否登录

<br />过滤器可以实现用户身份验证的功能,如果用户没有登录,则跳转到登陆页面:<br />本例实现:<br /> <br />过滤器类:<br /> <br />package com.start.util;<br />import javax.servlet.*; <br />import javax.servlet.http.HttpServletRequest; <br />import javax.servlet.http.HttpServletResponse; <br />import ja

javazw123的专栏 6100

AI量化学习入门指南:从零开始掌握人工智能投资策略

量化投资:利用数学模型和计算机算法进行投资决策的方法算法交易:自动执行预定义交易规则的系统机器学习:让计算机从数据中学习并改进的技术回测:用历史数据检验交易策略表现的过程特征工程:将原始数据转化为模型可理解的输入过拟合:模型过度适应历史数据,导致未来表现不佳夏普比率:衡量单位风险所获得的超额收益AI量化投资不仅仅是技术的应用,更是一种理性、系统化的投资哲学。它不追求预测市场的每一个拐点,而是通过概率思维和风险管理,在不确定性的市场中寻找统计优势。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 1134

JSP中filter过滤器验证用户登录(

现在JSP使用越来越广泛了,尤其是很多政府的网站都采用了JSP技术,其功能强大且安全。 初学者很多有这么个问题,就是,网站的一个权限设置,比如登录用户可以查看哪些页面,而游客又有权限可以看哪些内容呢? JSP是强大的,但其代码还是相对繁琐的,其实用一个过滤器(filter)就可以实现这个功能了。 以下为UserFilte的代码: import java.io.IOException;

huazaichang的专栏 2000

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java登录验证的过滤器

package cn.itcast.web.filter; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import java.io.IOException; /** * 登录验证的过滤器 */ @WebFilter("/*") public class LoginFilter implements Filter {

weixin_44547914的博客 1287

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

登录验证

jsp安全性问题,当别人知道某个jsp文件的网址后就可以跳过登陆页面直接访问该jsp文件了,这样无法禁止外部无权限用户的访问。本文讨论内容是通过权限验证的用户,才可以访问特定的页面。 JSP 页面验证,涉及到的知识有Session, 网页权限, 用户验证等。 session对象 session对象用来存储有关用户会话的所有信息,一个会话就是浏览器与服务器之间的一次通话,...

anjugui0311的博客 227

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

登录验证案例(Filter过滤器)

登录验证案例 * 需求 1. 访问UserCRUD_case案例的资源,验证其是否登录 2. 若登录了,则直接放行 3. 若未登录,则跳转到登陆界面,提示您尚未登录,请先登录 * 分析 * 如何判断用户是否登录呢? * 在UserCRUD_case案例中,我们在编写用户登录LoginServlet时,登陆成功后进行了以下操作: /...

暮光乐鱼的博客 701

【JSP】JSP验证用户是否登录

在项目开发过程中有些页面需要经过用户登录才能访问,不做登录验证的话用户直接在浏览器的地址栏输入访问页面就能访问,所以在需要登录才能显示的页面增加验证:。 JSP 页面验证,涉及知识有Session,网页权限, 用户验证等。 session对象 session对象用来存储有关用户会话的所有信息,一个会话就是浏览器与服务器之间的一次通话,它包含浏览器与服务器之间的多次请求、响应过程。sessio

LZGS_4的专栏 1194

java用过滤器验证登录框架_jsp实现登录验证的过滤器

本文实例为大家分享了jsp实现登录验证的过滤器,供大家参考,具体内容如下1.新建一个Dynamic Web Project项目,里面新建1个filter文件、1个servlet文件和2个jsp文件,整体的框架如图所示:2.LoginFilter.java里面的代码如下所示:package filter;import java.io.IOException;import java.io.PrintW...

weixin_39743414的博客 585

Filter登录验证过滤器(全局)

通过Filter来定义一个登录验证过滤器,这是就不需要在每一个JSP页面添加判断用户合法性的代码了。 以下示例中包含了5个文件,一个是登录表单LoginForm.jsp,一个是登录判断页LoginConf.jsp, 一个是登录验证过滤器LoginFilter.java,一个是登录成功页面LoginSucess.jsp,一个是登录失败 页面Loginfailure.jsp。 ...

dieman0446的博客 534

如何用过滤器拦截未登录直接访问资源页面

如何用cookie和过滤器拦截未登录直接访问资源页面

xiaozhuzhuyang的博客 1937

使用filter的表单验证

针对上述几篇博客,进行了优化。减少Queryservlet、UpdateServlet及index.jsp 部分对用户未登录就进行访问的验证。将这部分逻辑写入filter中。如下: public void doFilter(ServletRequest req, ServletResponse resp,             FilterChain chain) throws IOExce

到底意难平 1168

使用Filter控制用户登录权限

学jsp这么长时间,做的项目也有七八个了,可所有的项目都是用户登录就直接跳转到其拥有权限的页面,或者显示可访问页面的链接。使用这种方式来幼稚地控制访问权限。从来没有想过如果我没有登录,直接输入地址也可以直接访问用户的页面的。 在jsp中权限的控制是通过Filter过滤器来实现的,所有的开发框架中都集成有Filter,如果不适用开发框架则有如下实现方法: LoginFilter.java

HeavenPurpleHeart的博客 2688

JSP中通过Filter阻止未登录的非法访问

JSP中阻止未登录的非法访问

weixin_44014982的博客 702

Filter应用之-验证用户是否已经登录

过滤器: public class LoginFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequ...

weixin_30871701的博客 124
上一篇: 最新最全jQuery API 下载
下一篇: 学习记录 《常用算法大全》 分治算法 距离最近得点对
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值