`
- 浏览:
47074 次
- 来自:
...
-
java 代码
- 一、使浏览器不缓存页面的过滤器
- import javax.servlet.*;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
-
-
-
-
- public class ForceNoCacheFilter implements Filter {
-
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
- {
- ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");
- ((HttpServletResponse) response).setHeader("Pragma","no-cache");
- ((HttpServletResponse) response).setDateHeader ("Expires", -1);
- filterChain.doFilter(request, response);
- }
-
- public void destroy()
- {
- }
-
- public void init(FilterConfig filterConfig) throws ServletException
- {
- }
- }
-
- 二、检测用户是否登陆的过滤器
-
- import javax.servlet.*;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.StringTokenizer;
- import java.io.IOException;
-
-
-
-
-
-
-
-
- public class CheckLoginFilter
- implements Filter
- {
- protected FilterConfig filterConfig = null;
- private String redirectURL = null;
- private List notCheckURLList = new ArrayList();
- private String sessionKey = null;
-
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
- {
- HttpServletRequest request = (HttpServletRequest) servletRequest;
- HttpServletResponse response = (HttpServletResponse) servletResponse;
-
- HttpSession session = request.getSession();
- if(sessionKey == null)
- {
- filterChain.doFilter(request, response);
- return;
- }
- if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
- {
- response.sendRedirect(request.getContextPath() + redirectURL);
- return;
- }
- filterChain.doFilter(servletRequest, servletResponse);
- }
-
- public void destroy()
- {
- notCheckURLList.clear();
- }
-
- private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)
- {
- String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
- return notCheckURLList.contains(uri);
- }
-
- public void init(FilterConfig filterConfig) throws ServletException
- {
- this.filterConfig = filterConfig;
- redirectURL = filterConfig.getInitParameter("redirectURL");
- sessionKey = filterConfig.getInitParameter("checkSessionKey");
-
- String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
-
- if(notCheckURLListStr != null)
- {
- StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
- notCheckURLList.clear();
- while(st.hasMoreTokens())
- {
- notCheckURLList.add(st.nextToken());
- }
- }
- }
- }
-
- 三、字符编码的过滤器
-
- import javax.servlet.*;
- import java.io.IOException;
-
-
-
-
- public class CharacterEncodingFilter
- implements Filter
- {
- protected FilterConfig filterConfig = null;
- protected String encoding = "";
-
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
- {
- if(encoding != null)
- servletRequest.setCharacterEncoding(encoding);
- filterChain.doFilter(servletRequest, servletResponse);
- }
-
- public void destroy()
- {
- filterConfig = null;
- encoding = null;
- }
-
- public void init(FilterConfig filterConfig) throws ServletException
- {
- this.filterConfig = filterConfig;
- this.encoding = filterConfig.getInitParameter("encoding");
-
- }
- }
-
- 四、资源保护过滤器
-
-
- package catalog.view.util;
-
- import javax.servlet.Filter;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.FilterChain;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServletRequest;
- import java.io.IOException;
- import java.util.Iterator;
- import java.util.Set;
- import java.util.HashSet;
-
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
-
-
-
-
-
-
-
-
- public class SecurityFilter implements Filter {
-
- private static final String LOGIN_PAGE_URI = "login.jsf";
-
-
- private Log logger = LogFactory.getLog(this.getClass());
-
-
- private Set restrictedResources;
-
-
-
-
- public void init(FilterConfig filterConfig) throws ServletException {
- this.restrictedResources = new HashSet();
- this.restrictedResources.add("/createProduct.jsf");
- this.restrictedResources.add("/editProduct.jsf");
- this.restrictedResources.add("/productList.jsf");
- }
-
-
-
-
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
- throws IOException, ServletException {
- this.logger.debug("doFilter");
-
- String contextPath = ((HttpServletRequest)req).getContextPath();
- String requestUri = ((HttpServletRequest)req).getRequestURI();
-
- this.logger.debug("contextPath = " + contextPath);
- this.logger.debug("requestUri = " + requestUri);
-
- if (this.contains(requestUri, contextPath) && !this.authorize((HttpServletRequest)req)) {
- this.logger.debug("authorization failed");
- ((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req, res);
- }
- else {
- this.logger.debug("authorization succeeded");
- chain.doFilter(req, res);
- }
- }
-
- public void destroy() {}
-
- private boolean contains(String value, String contextPath) {
- Iterator ite = this.restrictedResources.iterator();
-
- while (ite.hasNext()) {
- String restrictedResource = (String)ite.next();
-
- if ((contextPath + restrictedResource).equalsIgnoreCase(value)) {
- return true;
- }
- }
-
- return false;
- }
-
- private boolean authorize(HttpServletRequest req) {
-
-
-
-
-
-
-
-
-
-
-
- }
- }
转自:http://hi.baidu.com/samxx8/blog/item/291a788ddb438c10b31bba35.html
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
在给定的文件中,提到了四个有用的Java过滤器实例,分别是: 1. **使浏览器不缓存页面的过滤器**: 这个过滤器的目的是防止用户浏览器缓存页面,确保每次请求都能获取服务器最新的内容。它通过设置HTTP响应头来...
【如何配置Filter过滤器处理JSP中文乱码】 在开发Java Web应用时,尤其是在处理包含中文字符的请求时,可能会遇到中文乱码的问题。解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP...
3. 按照过滤链的顺序,依次调用每个过滤器的`doFilter()`方法。 4. 在`doFilter()`方法中,过滤器可以对请求和响应进行处理,比如修改请求参数、添加请求头等。 5. 当所有过滤器都处理完后,请求到达目标Servlet,...
过滤器链是多个过滤器按顺序执行的过程,每个过滤器都可以选择是否将请求传递给下一个过滤器。 二、Spring Boot中使用Filter 在Spring Boot中,我们可以通过以下两种方式注册Filter: 1. 实现`javax.servlet....
这个过滤器的作用是禁用浏览器端的缓存,确保每次请求都获取最新的数据。具体实现方式是在响应头中设置 `"Cache-Control"`, `"Pragma"`, 和 `"Expires"` 这三个字段来控制缓存行为。 ```java ((HttpServletResponse...
Filter 接口用于定义一个过滤器, FilterChain 接口用于将多个过滤器连接起来,以便实现链式调用。 * Filter 接口: Filter 接口是 Java 中的一种过滤器接口,用于对 HttpServletRequest 和 HttpServletResponse ...
如果没有另一个过滤器与 servlet 或 JSP 页面关联,则 servlet 或 JSP 页面被激活。第四,对相应的 servlet 和 JSP 页面注册过滤器,在部署描述符文件(web.xml)中使用 filter 和 filter-mapping 元素。最后,禁用...
### 四个有用的Java过滤器收藏:深入解析与应用 #### 一、使浏览器不缓存页面的过滤器 在Web开发中,控制浏览器的缓存机制是非常重要的,特别是对于那些需要频繁更新或实时交互的网页。Java Servlet过滤器提供了一...
例如,在上述示例中,我们需要使用 "*0" 查询出四个数据记录(1011、010、201、301),但是使用默认的过滤器机制无法实现这种查询操作。这时,我们需要自定义过滤器以满足特定的查询需求。 自定义过滤器的实现 ...
在这个例子中,`Servlet3Filter` 类被 `@WebFilter` 注解标记,其 `filterName` 属性设置为 "Servlet3Filter",并且 `urlPatterns` 属性设置为 "/*",意味着这个过滤器将拦截所有进入应用程序的请求。 #### 六、`@...
过滤器链的概念使得多个过滤器可以按顺序执行,每个过滤器都可以决定是否将请求传递给下一个过滤器或直接终止。 二、Filter生命周期 每个Servlet过滤器都具有三个关键方法: 1. `init(FilterConfig config)`: 过滤...
它遵循一个链式调用的模式,即多个过滤器可以串联起来形成一个过滤器链,每个过滤器都可以按需对请求或响应进行操作。当请求到达时,过滤器链会按照声明的顺序逐个执行doFilter()方法。 **二、过滤器的生命周期** ...
2. **过滤链**:多个Filter可以组成一个过滤链,它们按照在web.xml或Spring Boot的配置文件中的顺序依次执行doFilter()方法。 3. **请求处理**:当请求到达时,Filter会按顺序调用doFilter(),传递ServletRequest和...
### Servlet配置过滤器Filter知识点详解 #### 一、概述 在Java Web开发中,`Servlet`过滤器(`Filter`)是一种重要的技术组件,它可以在请求到达目标资源(如Servlet或JSP页面)之前或者响应返回客户端之前进行...
下面我们将详细介绍五个有用的过滤器,每个过滤器都有其特定的作用和实现方式。 一、使浏览器不缓存页面的过滤器 这个过滤器的作用是使浏览器不缓存页面,从而确保每次访问页面时都可以获取最新的内容。实现这个...
### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...
- **Filter Chain**:多个过滤器可以按顺序连接起来形成一个过滤器链,每个过滤器依次处理请求。 通过以上介绍,我们可以了解到Servlet过滤器的强大功能及其在Web开发中的重要作用。理解并熟练掌握过滤器的使用可以...
在这个方法中,可以通过`chain.doFilter(request, response)`继续传递请求到下一个过滤器或最终的目标资源。 3. **`destroy()`**:在Web应用停止或过滤器被卸载时调用,用于释放资源。 ### 二、示例分析:缓存控制...