web.xml中定义Filter
<!-- 定义Filter -->
<filter>
<filter-name>log</filter-name>
<filter-class>zcw.LogFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- authority -->
<filter>
<filter-name>authority</filter-name>
<filter-class>zcw.AuthorityFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
<init-param>
<param-name>loginPage</param-name>
<param-value>/login.jsp</param-value>
</init-param>
<init-param>
<param-name>proLogin</param-name>
<param-value>/proLogin.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>authority</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
对应的java代码
package zcw;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class LogFilter implements Filter{
private FilterConfig config;
public void destroy() {
this.config = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//----------对用户请求进行预处理----------
//获取ServletContext对象,用于记录日志
ServletContext context = this.config.getServletContext();
long before = System.currentTimeMillis();
System.out.println("开始过滤");
//请求转换成HttpServletRequest
HttpServletRequest hrequest = (HttpServletRequest)request;
//记录日志
context.log("Filter拦截的请求地址"+hrequest.getServletPath());
//Filter只是链式处理请求依然放入目的地址
chain.doFilter(request, response);
//-----------对服务器响应后处理-----------
long after = System.currentTimeMillis();
//记录日志
context.log("过滤结束");
//在此记录
context.log("请求被定位到"+hrequest.getRequestURI()+"所花时间"+(after-before));
}
public void init(FilterConfig filterConfig) throws ServletException {
this.config = filterConfig;
}
}
--------------------------------------------------------------------------------------------
package zcw;
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.HttpSession;
public class AuthorityFilter implements Filter {
private FilterConfig config;
public void destroy() {
this.config = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//获取Filter的配置参数
String encoding = config.getInitParameter("encoding");
String loginPage = config.getInitParameter("loginPage");
String proLogin = config.getInitParameter("proLogin");
//设置request的编码字符集
request.setCharacterEncoding(encoding);
HttpServletRequest requ = (HttpServletRequest) request;
HttpSession session = requ.getSession(true);
//获取客户请求的页面
String requestPath = requ.getServletPath();
if(session.getAttribute("user") == null
&& !requestPath.endsWith(loginPage)
&& !requestPath.endsWith(proLogin)
)
{
//forward都登陆页面
request.setAttribute("tip", "您还没登录");
request.getRequestDispatcher(loginPage)
.forward(request, response);
}else{
chain.doFilter(request, response);
}
}
public void init(FilterConfig filterConfig) throws ServletException {
this.config = filterConfig;
}
}
第一个filter对所有的jsp文件都有过滤作用
第二个过滤器可以对用户是否登录做出响应响应
分享到:
相关推荐
### JSP Filter 过滤器判断用户是否登录 在Web应用开发中,权限验证是非常重要的一个环节。通过使用过滤器(Filter),可以在请求到达目标资源(如Servlet或JSP页面)之前进行处理,例如实现登录状态检查、权限验证...
【Jsp Filter的简单使用】 在Java Web开发中,Servlet Filter是实现动态网页(JSP)功能增强的重要组件。Filter接口允许我们对HTTP请求和响应进行拦截处理,它提供了在请求到达目标Servlet或JSP之前对其进行预处理...
`Filter`在JSP中扮演着过滤器的角色,它可以监控多个`Servlet`或`JSP`页面,对请求和响应进行预处理或后处理。Filter的工作流程遵循以下步骤: 1. **初始化**: 当Web应用程序启动时,服务器会创建Filter实例并调用`...
### JSP Filter 过滤器功能与简单用法示例 #### 一、概述 在Web应用开发中,过滤器(Filter)是一种重要的组件,它能够动态地拦截客户端请求和服务器响应,在请求到达目标资源(如Servlet或JSP页面)之前进行...
【教学在线留言答疑系统,JavaWeb基础,servlet jsp filter,原生jdbc】 这个教学在线留言答疑系统是一个典型的IT毕业设计项目,旨在帮助学生掌握JavaWeb开发的基础知识和技术。项目的核心技术包括Servlet、JSP...
**JSP、Servlet与Filter详解** 在Web开发领域,Java技术是不可或缺的一部分,其中JSP(JavaServer Pages)、Servlet和Filter是三个核心概念。本文将深入探讨这些技术,帮助开发者温故知新,理解它们的功能、工作...
tomcat+httpservlet+session+cookie+jsp+filter
**JSP权限管理系统filter**是基于Java和JSP技术实现的一种常见的Web应用程序安全控制机制,主要目的是为了实现用户访问控制,防止未授权的用户访问敏感资源。在这个系统中,Filter(过滤器)扮演了关键角色,它在...
JSP Filter是一种Java Web技术,属于Java Servlet规范的一部分。它提供了一种机制,允许开发者在客户端请求达到Servlet之前、或者Servlet的响应发送回客户端之后进行拦截处理。Filter可以实现请求的预处理、响应的后...
**JSP Filter 过滤器概述** 在Java Web开发中,`JSP Filter` 是一个强大的工具,它允许开发者在客户端请求到达Servlet或者JSP页面,以及服务器响应返回客户端之前,对请求和响应进行处理。这使得开发者能够在不修改...
例如,以下代码展示了如何使用@WebFilter注解来创建一个JspFilter过滤器,它会对所有.jsp后缀的请求进行拦截: ```java import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet...
### Servlet与JSP与Filter的使用详解 #### 一、Servlet与JSP的基本概念 Servlet是一种Java技术,用于创建动态Web应用程序。它本质上是一个Java类,由Web服务器或应用服务器加载,以响应客户端请求。Servlet可以...
详尽地介绍了JSP中Filter的使用方法,欢迎下载本资源,谢谢