我们可能经常会用到这一功能,比如有时,我们不希望用户没有进行登录访问后台的操作页面,而且这样的非法访问会让系统极为的不安全,所以我们常常需要进行登录才授权访问其它页面,否则只会出现登录页面,当然我的思路:
一种是在jsp页面进行session的判断,如果不存在该用户的session,就跳转到登录页面,否则执行jsp页面代码,但是你会发现这样做逻辑也简单,但是非常麻烦,如果有很多个jsp,那么就要写多个判断
另一种则是利用过滤器,访问页面时都进行过滤验证,如果存在该用户session,则访问该页面,否则跳转到登陆页面登录,保存session后访问其它页面
一下是我的实现
package com.test.filter; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.Filter; import javax.servlet.FilterChain; 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 static final String login_page = "/test/admin/index.jsp"; public static final String logout_page = "/test/admin/Public/login.jsp"; public void destroy(){ } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)throws ServletException, IOException { HttpServletRequest request = (HttpServletRequest)servletRequest; HttpServletResponse response = (HttpServletResponse)servletResponse; String currentURL = request.getRequestURI(); String ctxPath = request.getContextPath(); //除掉项目名称时访问页面当前路径 String targetURL = currentURL.substring(ctxPath.length()); HttpSession session = request.getSession(false); //对当前页面进行判断,如果当前页面不为登录页面 if(!("/admin/Public/login.jsp".equals(targetURL))){ System.out.println("1"+targetURL+"ctxPath:"+ctxPath+"currentURL:"+currentURL); //在不为登陆页面时,再进行判断,如果不是登陆页面也没有session则跳转到登录页面, if(session == null || session.getAttribute("admin") == null){ response.sendRedirect(logout_page); return; }else{ //这里表示正确,会去寻找下一个链,如果不存在,则进行正常的页面跳转 filterChain.doFilter(request, response); return; } }else{ //这里表示如果当前页面是登陆页面,跳转到登陆页面 filterChain.doFilter(request, response); return; } } public void init(FilterConfig filterConfig)throws ServletException{ } }
接下来在web.xml中进行配置
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.loveplusplus.weixin.util.LoginFilter</filter-class> </filter> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/elecmgServlet</url-pattern> </filter-mapping> <filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
那么,这样功能就实现了
相关推荐
综上所述,使用servlet+jsp实现过滤器,可以有效地防止未登录用户访问受保护页面。开发者可以灵活地定义过滤器的行为,并且通过配置文件将过滤器与具体的URL模式关联起来,实现复杂的权限控制逻辑。
在本文中,我们将深入探讨如何使用Servlet和JSP技术实现用户登录功能,这对于初学者来说是一个重要的学习点。Servlet和JSP是Java Web开发中的核心组件,它们在服务器端处理HTTP请求并生成动态内容。 首先,让我们...
- **配置文件**:如web.xml,配置Servlet、过滤器和监听器等。 **其他关键点** - **会话管理**:在用户登录后,系统通常会创建一个会话,保存用户的登录状态和其他相关信息,以确保安全性。 - **异常处理**:通过...
在这个项目中,“jsp+servlet登录验证过滤器”涉及了用户登录验证的过程,以及使用过滤器(Filter)来实现这一功能。下面将详细介绍这个主题中的相关知识点。 1. **JSP**:JSP是一种服务器端的技术,允许开发者在...
若用户没有登录成功,而直接访问主界面,则被过滤器过滤到index.jsp,若登录成功,验证身份后,才有权限访问产品和其他功能。 例如:如果没登录成功,则被过滤到index.jsp 二、技术介绍: 主要框架技术:jsp+...
【标题】"人力资源管理系统servlet+jsp+过滤器+数据库"是基于Java Web技术构建的企业级应用,旨在高效地管理企业的人力资源信息。该系统采用三层架构设计,包括表现层(jsp)、业务逻辑层(servlet)和数据访问层...
在本项目中,"JSP+JavaBean+Servlet技术实现某网站用户注册和登录功能",我们探讨了三种核心技术在Web开发中的应用,这三种技术是构建动态网站的基础。以下是这些技术的详细说明: 1. **JavaServer Pages (JSP)**: ...
在商品管理系统中,Servlet主要负责业务逻辑的处理,例如用户登录验证、商品信息的增删改查等。通过定义不同的Servlet,可以实现对不同URL的请求进行定向,提高了代码的组织性和模块化。 再者,JavaBean作为业务...
本项目"登录之jsp+servlet+jstl+el+过滤器+监听器.zip_OAI_Serverlet_severlet"显然是一个实践示例,用于演示如何在Java Web环境中实现用户登录功能。 首先,`JSP`是Java的一种视图技术,它允许开发者在HTML页面中...
6. **Servlet过滤器和监听器**:可能用到过滤器进行权限控制,监听器监听某些特定事件,如session的创建和销毁。 【总结】 "基于servlet+jsp+Oracle的在线问题解决小系统"是一个完整的Web应用,集成了服务器端编程...
JavaWeb房屋租赁管理系统是基于Java技术栈开发的一个实用应用程序,主要利用Servlet、JSP和MySQL数据库来实现。这个系统提供了一整套完善的房屋租赁管理功能,适用于物业、中介公司或个人房东进行房源信息管理。系统...
4. **过滤器(Filter)**:过滤器在Servlet规范中定义,可以在请求到达目标Servlet之前或之后进行拦截处理,例如实现登录验证、URL重写、字符编码转换等功能。在这个系统中,过滤器可能用于确保用户访问权限的控制。...
`web.xml`文件是每个Web应用的核心配置文件,它定义了应用的初始化参数、Servlet映射、过滤器等信息。例如: ```xml <web-app> <servlet> <servlet-name>MyServlet</servlet-name> <servlet-class>...
过滤器可以用来实现如登录验证、GZIP压缩、字符编码转换、日志记录等多种功能。 **4. Maven** Maven是Java项目管理工具,它可以帮助开发者管理项目依赖、构建、文档生成等任务。项目中提到的“加上过滤器.do”,...
数字转中文<br>128 自动计算金额<br>129 JSP页面打印中使用WebBrowser控件<br>130 <select...>不刷新页面添加新的类别<br>131 鼠标滚动缩放图片<br>132 根据输入的表名生成输入数据表格<br>133 JSP表格输出到Excel...
【servlet+jsp+MVC模式博客blog】项目是一个基于Java Web技术的博客系统实现,主要利用了Servlet、JSP以及MVC(Model-View-Controller)设计模式。在这个项目中,Servlet作为控制器处理用户的请求,JSP作为视图展示...
在IT领域,特别是Java Web开发中,Servlet过滤器(Filter)是实现用户权限管理、登录状态验证等关键功能的重要机制之一。本文将深入探讨如何利用Servlet过滤器来验证用户是否已登录,以及如何配置过滤器以针对特定的...
主要内容包括web应用程序运行原理、主流集成开发工具(eclipse/myeclipse)和运行环境(tomcat)的配置和使用、servlet、jsp、jdbc、jsp表达式语言(el)、servlet监听器和过滤器、定制标记库、jstl、mvc模式、dao...
而Filter(过滤器)是Servlet API的一部分,它提供了一种机制,可以在请求到达目标资源之前或之后对请求和响应进行拦截处理。Filter在处理Web请求时扮演着不可或缺的角色,比如日志记录、权限验证、内容压缩等。以下...