Java丨简单的登录过滤器实现方法
过滤过滤,实际就是把需要和不需要的东西分开!
今天来说道说道我们程序中的‘登录过滤器’ ,首先我们看看一下面的问题:
1、“登录过滤器”是干什么用的?
1)“登录过滤器”就是为了防止在用户没有登录的情况下来访问我们的网站。
2)举例:main.html 这个网页是需要通过login.html这个网页登录后才可以访问的,现在有一个用户没有登录,直接访问main.html成功了。那么,这样的网站是不是觉得不安全呢?用户不用登录随随便便就访问了。so,we have to need a filter.我们需要用过滤器来过滤一些需要登录后才可以访问的页面.
2、我们要怎么过滤呢?
1)at first ! 我们肯定要过滤掉需要登录的页面
2)我们拿到了需要登录的页面后,我们怎么判断用户有没有登录呢?so,we need a session .
3)已session为依据,来判断用户是不是登录过了。登录过了我们就让他继续访问,没有登录的我们就让他返回到登录界面。
下面我们来看看代码是如何实现的:
package com.haojieli.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;
import javax.servlet.http.HttpSession;
public class LoginFilter implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest req = (HttpServletRequest)arg0;
HttpServletResponse resp =(HttpServletResponse) arg1;
HttpSession session = req.getSession();
// 获得用户请求的URI
String path = req.getRequestURI();
// 从session取得已经登录验证的凭证 我这里的demo用的是password来作为登录凭证
String password = (String) session.getAttribute("password");
// login.jsp页面无需过滤(根据自己项目的要求来)
//也可以path.contains("login.jsp") 反正怎么精确怎么来就不多说了
if(path.indexOf("/login.jsp") > -1) {//注意:登录页面千万不能过滤 不然过滤器就。。。。。自行调试不要偷懒!这样记忆深刻
arg2.doFilter(req, resp);
return;
} else {//如果不是login.jsp进行过滤
if (password == null || "".equals(password)) {
// 跳转到登陆页面
resp.sendRedirect("login.jsp");
} else {
// 已经登陆,继续此次请求
arg2.doFilter(req, resp);
}
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
在这里就不用解释代码了,代码中有详细的注释,但是重要的一点 我们过滤器是写好了 ,还需要配置啊,不然怎么运行呢?followe me。
将过滤器配置到web.xml里面
<filter>
<filter-name>Login</filter-name>
<filter-class>com.haojieli.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>adminLogin</filter-name>
<!--这里的/admin/* 表示是指定路径下的文件需要过滤 也可以写为 <url-pattern>/*</url-pattern> 表示所有文件都需要过滤-->
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
注意:登录页面不能过滤。。。自行调试不要偷懒!这样记忆深刻......
博文到此结束,感谢您的观看,希望对各位读者有所帮助,如果有什么意见以及建议请在评论留言......
======祝各位读者生活愉快======
Java丨简单的登录过滤器实现方法的更多相关文章
- 【知了堂学习笔记】java web 简单的登录
最近皮皮潇在学习java web,刚接触了简单的东西,所以今天给大家带来一个简单的登录实现. 页面: 页面代码: <%@ page language="java" conte ...
- JAVA web简单的登录界面jsp实现
此次试验所用到的软件是myeclipse10,tomcat7,Dreamweaver,sqlserver2008数据库.可以实现用户使用用户名和密码登录.如果登录成功,页面会显示登录成功,如果密码错误 ...
- 第一次Java作业——简单的登录界面
千里之行,始于足下,从小做起,一点一滴学编程. import javax.swing.*; import java.awt.*; public class Homework{ public stati ...
- java web 简单的登录注册
--sql文件 create database studentgouse studentgocreate table stuinfo(--stuid int primary key identity( ...
- .NET MVC中登录过滤器拦截的两种方法
今天给大家介绍两种ASP中过滤器拦截的两种方法. 一种是EF 的HtppModule,另一种则是灵活很多针对MVC的特性类 Attribute 具体什么是特性类可以参考着篇文章:https://www ...
- Spring MVC 架构的java web工程如何添加登录过滤器
发布到外网的web工程必须添加登录过滤器来阻挡一些非法的请求,即只有登录的用户才能对web工程进行请求,否则无论请求什么资源都需要调整到登录页面进行登录操作.这时就需要用到过滤器,其实非常简单,只需要 ...
- java实现简单的单点登录
java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...
- Java结合SpringBoot拦截器实现简单的登录认证模块
Java结合SpringBoot拦截器实现简单的登录认证模块 之前在做项目时需要实现一个简单的登录认证的功能,就寻思着使用Spring Boot的拦截器来实现,在此记录一下我的整个实现过程,源码见文章 ...
- Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...
随机推荐
- pc端用微信扫一扫实现微信第三方登陆
官方文档链接 第一步:获取AppID AppSecret (微信开发平台申请PC端微信登陆) 第二步:生成扫描二维码,获取code https://open.weixin.qq.com/conn ...
- 学会这些你就是Android 开发高手了!
世界范围内,很多移动设备都是Android系统,Android开发可以说很有前景.对于安卓开发者来说,如果有个地方可以找到Android开发所有的资料,不需要一个网站一个网站的搜索,简直是件很开心的事 ...
- JavaScript:隐藏Url中的参数
<script type="text/javascript"> function submitForm(url, data) { var eleForm = docum ...
- springmvc 自定义拦截器
<mvc:interceptors> <!-- 配置自定义的拦截器 --> <bean class="com.atguigu.springmvc.interce ...
- jetbrains goland 跳到上一个光标处
查了下是 :Ctrl + Alt + 左右 mac下面是:Command+ Alt + 左右键 但是我用下来是切上面打开文档页 摸索了下是:Ctrl +Win+ Alt + 左右 我的键的映射是De ...
- golang解析json报错:invalid character '\x00' after top-level value
golang解析json报错:invalid character '\x00' after top-level value 手动复制字符串:{"files":["c:/t ...
- Java结对编程之挑战出题
Java结对编程之挑战出题 需求分析 需求 对于挑战出题来说最主要的就是要产生的式子并将重复的式子去掉. 设计思路 具体的思路: 思路一: 原先我打算用集合中的元素的不重复性进行去重,这种思路的好处就 ...
- maven项目在eclipse的library中没有Maven Dependencies
今天使用maven创建了一个多模块的项目,在分别创建完父项目和各个子模块后,编译父项目的时候,父项目工程目录上出现了一堆红叉叉,点进去一看,是找不到依赖的类,但是pom文件中相应jar的depende ...
- js插件封装
插件封装原则 1.暴露出来的实例必须只能是一个 2.IIFE包裹 !执行包裹 函数作用域保护 3.实例化方法不要写在函数内 throw这个方法是报错
- NumPy数据类型
NumPy - 数据类型 NumPy 支持比 Python 更多种类的数值类型. 下表显示了 NumPy 中定义的不同标量数据类型. 序号 数据类型及描述 1. bool_存储为一个字节的布尔值(真或 ...