控制器类
package com.crm.filter;
import java.io.IOException;
import java.io.PrintWriter;
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 {
private static final String LOGON_URI = "LOGON_URI";
private static final String HOME_URI = "HOME_URI";
private String logon_page;
private String home_page;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
resp.setContentType("text/html;");
resp.setCharacterEncoding("utf-8");
HttpSession session = req.getSession();
PrintWriter out = resp.getWriter();
// 得到用户请求的URI
String request_uri = req.getRequestURI();
// 得到web应用程序的上下文路径
String ctxPath = req.getContextPath();
// 去除上下文路径,得到剩余部分的路径
String uri = request_uri.substring(ctxPath.length());
// 判断用户访问的是否是登录页面
if (uri.equals(logon_page) || uri.equals(home_page)) {
chain.doFilter(request, response);
return;
} else {
// 如果访问的不是登录页面,则判断用户是否已经登录
if (null != session.getAttribute("curUser")
&& "" != session.getAttribute("curUser"))
{
chain.doFilter(request, response);
return;
} else {
out.println("<script language=\"javaScript\">"
+ "parent.location.href='" +
ctxPath + logon_page + "'"
+ "</script>");
return;
}
}
}
public void init(FilterConfig config) throws ServletException {
// TODO Auto-generated method stub
// 从部署描述符中获取登录页面和首页的URI
logon_page = config.getInitParameter(LOGON_URI);
home_page = config.getInitParameter(HOME_URI);
// System.out.println(logon_page);
if (null == logon_page || null == home_page) {
throw new ServletException("没有找到登录页面或主页");
}
}
}
web.xml
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.crm.filter.LoginFilter</filter-class>
<init-param>
<param-name>LOGON_URI</param-name>
<param-value>/login.jsp</param-value>
</init-param>
<init-param>
<param-name>HOME_URI</param-name>
<param-value>/index.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
分享到:
相关推荐
本教程将详细讲解如何使用Java Web中的过滤器(Filter)来实现这样的访问控制。过滤器是Servlet API的一部分,它允许我们在请求到达目标资源(如Servlet、JSP页面)之前或之后对请求和响应进行拦截处理。 首先,...
总结来说,"过滤器--控制不同权限用户访问不同文件夹代码.rar"是一个实用的示例,它展示了如何使用Java Servlet过滤器技术实现精细的权限控制,确保不同权限级别的用户只能访问其被授权的资源。这样的功能对于保护...
为了实现用户权限的精细化管理,开发者常常会使用过滤器(Filter)来实现对用户访问资源的控制。本文将深入探讨如何在JSP中利用过滤器实现用户权限限制功能。 首先,我们需要了解过滤器的概念。在Servlet规范中,...
总之,Java过滤器提供了一种强大的机制,允许我们在Web应用的请求处理流程中插入自定义逻辑,从而增强应用的功能和控制权。在处理中文乱码问题时,正确设置请求和响应的字符编码是至关重要的,而过滤器正为此提供了...
总之,JAVA过滤器作为Java Web开发中的一个重要组成部分,提供了强大的功能和灵活性,可以用于解决多种实际问题,包括但不限于编码处理、权限验证、日志记录、异常处理、数据格式转换和缓存优化等。理解和掌握过滤器...
本项目主要关注的是如何使用过滤器(Filter)和拦截器(Interceptor)来实现登录页面的控制与跳转。以下是对这些知识点的详细说明: 1. **SpringBoot**: SpringBoot是Spring框架的一个子项目,旨在简化Spring应用...
在描述中提到的“权限判断”,通常是指在用户尝试访问受保护的资源时,过滤器会检查用户的登录状态或角色权限。例如,未登录用户尝试访问管理员页面时,过滤器可以捕获该请求,拒绝访问并重定向到登录页面。 使用...
基于 Java 过滤器实现的系统权限控制方法研究 简介 ...基于 Java 过滤器实现的系统权限控制方法是一种简单、高效的权限控制方法,可以实现精确的权限控制,拒绝用户对未授权的系统资源进行访问。
这种过滤器通常用于实现网站的访问权限控制。 3. **字符编码转换过滤器** 该过滤器用于统一处理请求和响应的字符编码问题,避免乱码。它会在请求进入Servlet之前,将请求参数从特定的编码转换为服务器期望的编码,...
- **权限控制**:如上面示例所示,检查用户是否已登录,限制未授权访问。 - **字符编码转换**:统一处理请求和响应的编码问题。 - **日志记录**:记录请求信息,便于调试和分析。 - **缓存处理**:对静态资源进行...
1. **权限控制**:在请求到达目标资源之前,检查用户是否具有访问权限。 2. **编码转换**:统一处理请求的字符编码问题。 3. **日志记录**:记录请求和响应的信息,便于后续分析。 4. **性能监控**:记录请求处理的...
在Java Web开发中,权限控制是一项至关重要的任务,它确保只有授权的用户才能访问特定的资源和服务。这里的“java权限控制”主要指的是在Web应用程序中实施的安全策略,以保护敏感数据和操作。过滤器(Filter)是...
通过过滤器判断用户权限是实现应用安全访问控制的一种常见手段,尤其在Web应用程序中非常普遍。下面我们将基于提供的文件信息,深入探讨如何通过过滤器来判断用户的权限。 ### 一、UserPermissionFilter类详解 ###...
过滤器可以用来实现各种功能,如用户认证、权限检查、编码转换、日志记录等。在给定的文件片段中,我们看到了一个具体的过滤器配置示例,下面将详细解析这段配置及其背后的知识点。 ### 过滤器的基本概念 过滤器是...
总之,这个名为`jsecurity-0.9.0`的Java权限控制插件提供了管理和限制用户访问权限的功能,可能是基于Jaas或其他相关技术实现。通过对源码的深入学习,开发者可以借鉴其设计理念和实现方法,为自己的项目构建更安全...
本文将深入探讨如何通过过滤器(Filter)来管理用户权限,这是基于Java Servlet技术的一种常见实践。首先,我们来理解过滤器的概念。 过滤器(Filter)是Java Servlet API的一部分,它允许我们在请求到达目标资源...
Java 后台权限控制是构建安全的Web应用中不可或缺的一部分,它确保了用户只能访问他们被授权的操作和数据。在Java开发中,Apache Shiro是一个非常流行的安全框架,用于实现身份验证、授权(权限控制)、会话管理和...
- **安全性**:过滤器可以检查用户权限,防止未授权访问。 - **数据格式转换**:例如,将请求参数统一转换为UTF-8编码。 - **日志记录**:记录请求和响应信息,便于调试和分析。 - **性能监控**:统计请求处理时间,...
这类过滤器用于监控和控制对特定资源的访问,如文件、数据库记录或API端点。它们可以在资源被访问之前或之后执行操作,比如记录访问日志、更新权限状态或触发安全策略。这有助于实施细粒度的访问控制和审计策略。 #...
在Web应用中,通常需要对用户的访问权限进行控制,确保只有经过验证的用户才能访问某些资源。为此,我们可以创建一个过滤器,在用户访问受保护资源之前检查其登录状态。如果用户尚未登录,则将其重定向至登录页面。 ...