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 {
 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
  // TODO Auto-generated method stub
 }
 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  // 获得在下面代码中要用的request,response,session对象
  HttpServletRequest servletRequest = (HttpServletRequest) request;
  HttpServletResponse servletResponse = (HttpServletResponse) response;
  HttpSession session = servletRequest.getSession();
  // 获得用户请求的URI
  String path = servletRequest.getRequestURI();
  //System.out.println(path);
  // 从session里取员工工号信息
  String empId = (String) session.getAttribute("empId");
  /*创建类Constants.java,里面写的是无需过滤的页面
  for (int i = 0; i < Constants.NoFilter_Pages.length; i++) {
   if (path.indexOf(Constants.NoFilter_Pages[i]) > -1) {
    chain.doFilter(servletRequest, servletResponse);
    return;
   }
  }*/
  // 登陆页面无需过滤
  if(path.indexOf("/login.jsp") > -1) {
   chain.doFilter(servletRequest, servletResponse);
   return;
  }
  // 判断如果没有取到员工信息,就跳转到登陆页面
  if (empId == null || "".equals(empId)) {
   // 跳转到登陆页面
   servletResponse.sendRedirect("/JingXing_OA/login.jsp");
  } else {
   // 已经登陆,继续此次请求
   chain.doFilter(request, response);
  }
 }
 @Override
 public void destroy() {
  // TODO Auto-generated method stub
 }
}

2.然后在web.xml里配置需要登陆权限验证的JSP文件:

  a.如果是某个具体的JSP文件(如a.jsp)需要登陆验证:

1
2
3
4
5
6
7
8
9
<!-- 配置登陆过滤器 -->
<filter>
  <filter-name>login</filter-name>
  <filter-class>com.jingxing.oa.filter.LoginFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>login</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

b.如果是某一个目录(如a/目录)整个目录下的文件都需要登陆验证:

1
2
3
4
5
6
7
8
9
<!-- 配置登陆过滤器 -->
 <filter>
  <filter-name>login</filter-name>
  <filter-class>com.jingxing.oa.filter.LoginFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>login</filter-name>
  <url-pattern>/a/*</url-pattern>
 </filter-mapping>

java web过滤器防止未登录进入界面的更多相关文章

  1. Spring MVC 架构的java web工程如何添加登录过滤器

    发布到外网的web工程必须添加登录过滤器来阻挡一些非法的请求,即只有登录的用户才能对web工程进行请求,否则无论请求什么资源都需要调整到登录页面进行登录操作.这时就需要用到过滤器,其实非常简单,只需要 ...

  2. Java Web——过滤器

    <Java Web开发技术应用——过滤器> 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进 ...

  3. 转:实现Java Web程序的自动登录

    有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机).实现这个功能关键就是服务端要识别客户的身份.而用Cookie ...

  4. JavaWeb 过滤器——验证登录 防止未登录进入界面

    昨天刚刚完成老师布置的一个Web小项目,项目中用到了两个过滤器(编码过滤.登录过滤) 比如电商网页中有些不需要登录也能访问(首页.商品详细信息...),其他都需要过滤在会话作用域(session)中是 ...

  5. eclipse Tomcat和 MYSQL JAVA web新手开发示例--登录界面连接数据库

    登录界面login.jsp 1 <%@ page language="java" import="java.util.*" contentType=&qu ...

  6. 在java web 工程中实现登录和安全验证

    登录验证代码 package security; import java.io.IOException; import javax.servlet.ServletException; import j ...

  7. JAVA WEB 过滤器(Filter)中向容器 Spring 注入 bean

    如果直接使用 @Autoware 获取 bean 会直接使该 bean 为 null,这是因为这种配置过滤器的方法无法在过滤器中使用 Spring bean,因为 Filter 比 bean 先加载, ...

  8. java web 过滤器跟拦截器的区别和使用

    注:文章整理自知乎大牛以及百度网友(电脑网络分类达人 吕明),特此感谢! 一.过滤器 1.什么是过滤器? 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个 ...

  9. java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)

    转载地址:http://www.cnblogs.com/xdp-gacl/p/3952405.html 在filter中可以得到代表用户请求和响应的request.response对象,因此在编程中可 ...

随机推荐

  1. iptables防火墙操作-查看、配置、重启、关闭

    查看iptables端口配置 iptables -L -n --line-number iptables端口配置(不开通3389无法远程连接,不开通icmp无法ping) iptables -A IN ...

  2. 当在terminal中输入一行命令的时候,查找的顺序如何看

    大多数时候,尤其是安装了anaconda的时候,我们常常会知道,实际上因为conda的环境变量写到了该用户下的.bashrc下面,所以在terminial敲如python的时候,会显示conda的py ...

  3. mysql提示错误[Error Code] 1290 - The MySQL server is running with the --secure-file-priv option解决办法

    1.进入mysql查看secure_file_prive的值 $mysql -u root -p mysql>SHOW VARIABLES LIKE "secure_file_priv ...

  4. Tomcat集成到MyEclipse

    1.Tomcat集成到MyEclipse 使用MyEclipse配置服务器后,就可以使用MyEclipse来启动和停止服务器了.当然,你需要先安装好服务器(Tomcat),才能配置.MyEclipse ...

  5. three.js之让物体动起来方式(一)移动摄像机

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. java——比较难和底层的面试题

    链接地址:https://mp.weixin.qq.com/s/lnbCysCQgfjF_kcB83KQZg 这是一个在线教育机构的文章,感觉大部分都不会,太难了. 一.自我介绍 二.多线程相关: 线 ...

  7. ubuntu学习笔记-sudo/gedit

    1.sudo命令 sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 和管理时间 ...

  8. Mybatis XML配置(转载)

    原文地址:https://www.w3cschool.cn/mybatis/f4uw1ilx.html Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它 ...

  9. docker run always

    https://www.cnblogs.com/kaishirenshi/p/10396446.html

  10. Python之import方法引入模块详解

    在python用import或者from-import或者from-import-as-来导入相应的模块,作用和使用方法与C语言的include头文件类似.其实就是引入某些成熟的函数库和成熟的方法,避 ...