java 代码
一、使浏览器不缓存页面的过滤器
1. import javax.servlet.*;
2. import javax.servlet.http.HttpServletResponse;
3. import java.io.IOException;
4.
5. /**
6. * 用于的使 Browser 不缓存页面的过滤器
7. */
8. public class ForceNoCacheFilter implements Filter {
9.
10. public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
11. {
12. ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");
13. ((HttpServletResponse) response).setHeader("Pragma","no-cache");
14. ((HttpServletResponse) response).setDateHeader ("Expires", -1);
15. filterChain.doFilter(request, response);
16. }
17.
18. public void destroy()
19. {
20. }
21.
22. public void init(FilterConfig filterConfig) throws ServletException
23. {
24. }
25. }
二、检测用户是否登陆的过滤器
1. import javax.servlet.*;
2. import javax.servlet.http.HttpServletRequest;
3. import javax.servlet.http.HttpServletResponse;
4. import javax.servlet.http.HttpSession;
5. import java.util.List;
6. import java.util.ArrayList;
7. import java.util.StringTokenizer;
8. import java.io.IOException;
9.
10. /**
11. * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面
12.
13.
14. * 配置参数
15.
16.
17. * checkSessionKey 需检查的在 Session 中保存的关键字
18.
19. * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath
20.
21. * notCheckURLList 不做检查的 URL列表,以分号分开,并且 URL 中不包括 ContextPath
22.
23. */
24. public class CheckLoginFilter
25. implements Filter
26. {
27. protected FilterConfig filterConfig = null;
28. private String redirectURL = null;
29. private List notCheckURLList = new ArrayList();
30. private String sessionKey = null;
31.
32. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
33. {
34. HttpServletRequest request = (HttpServletRequest) servletRequest;
35. HttpServletResponse response = (HttpServletResponse) servletResponse;
36.
37. HttpSession session = request.getSession();
38. if(sessionKey == null)
39. {
40. filterChain.doFilter(request, response);
41. return;
42. }
43. if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
44. {
45. response.sendRedirect(request.getContextPath() + redirectURL);
46. return;
47. }
48. filterChain.doFilter(servletRequest, servletResponse);
49. }
50.
51. public void destroy()
52. {
53. notCheckURLList.clear();
54. }
55.
56. private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)
57. {
58. String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
59. return notCheckURLList.contains(uri);
60. }
61.
62. public void init(FilterConfig filterConfig) throws ServletException
63. {
64. this.filterConfig = filterConfig;
65. redirectURL = filterConfig.getInitParameter("redirectURL");
66. sessionKey = filterConfig.getInitParameter("checkSessionKey");
67.
68. String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
69.
70. if(notCheckURLListStr != null)
71. {
72. StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
73. notCheckURLList.clear();
74. while(st.hasMoreTokens())
75. {
76. notCheckURLList.add(st.nextToken());
77. }
78. }
79. }
80. }
三、字符编码的过滤器
1. import javax.servlet.*;
2. import java.io.IOException;
3.
4. /**
5. * 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
6. */
7. public class CharacterEncodingFilter
8. implements Filter
9. {
10. protected FilterConfig filterConfig = null;
11. protected String encoding = "";
12.
13. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
14. {
15. if(encoding != null)
16. servletRequest.setCharacterEncoding(encoding);
17. filterChain.doFilter(servletRequest, servletResponse);
18. }
19.
20. public void destroy()
21. {
22. filterConfig = null;
23. encoding = null;
24. }
25.
26. public void init(FilterConfig filterConfig) throws ServletException
27. {
28. this.filterConfig = filterConfig;
29. this.encoding = filterConfig.getInitParameter("encoding");
30.
31. }
32. }
四、资源保护过滤器
1. package catalog.view.util;
2.
3. import javax.servlet.Filter;
4. import javax.servlet.FilterConfig;
5. import javax.servlet.ServletRequest;
6. import javax.servlet.ServletResponse;
7. import javax.servlet.FilterChain;
8. import javax.servlet.ServletException;
9. import javax.servlet.http.HttpServletRequest;
10. import java.io.IOException;
11. import java.util.Iterator;
12. import java.util.Set;
13. import java.util.HashSet;
14. //
15. import org.apache.commons.logging.Log;
16. import org.apache.commons.logging.LogFactory;
17.
18. /**
19. * This Filter class handle the security of the application.
20. *
21. * It should be configured inside the web.xml.
22. *
23. * @author Derek Y. Shen
24. */
25. public class SecurityFilter implements Filter {
26. //the login page uri
27. private static final String LOGIN_PAGE_URI = "login.jsf";
28.
29. //the logger object
30. private Log logger = LogFactory.getLog(this.getClass());
31.
32. //a set of restricted resources
33. private Set restrictedResources;
34.
35. /**
36. * Initializes the Filter.
37. */
38. public void init(FilterConfig filterConfig) throws ServletException {
39. this.restrictedResources = new HashSet();
40. this.restrictedResources.add("/createProduct.jsf");
41. this.restrictedResources.add("/editProduct.jsf");
42. this.restrictedResources.add("/productList.jsf");
43. }
44.
45. /**
46. * Standard doFilter object.
47. */
48. public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
49. throws IOException, ServletException {
50. this.logger.debug("doFilter");
51.
52. String contextPath = ((HttpServletRequest)req).getContextPath();
53. String requestUri = ((HttpServletRequest)req).getRequestURI();
54.
55. this.logger.debug("contextPath = " + contextPath);
56. this.logger.debug("requestUri = " + requestUri);
57.
58. if (this.contains(requestUri, contextPath) && !this.authorize((HttpServletRequest)req)) {
59. this.logger.debug("authorization failed");
60. ((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req, res);
61. }
62. else {
63. this.logger.debug("authorization succeeded");
64. chain.doFilter(req, res);
65. }
66. }
67.
68. public void destroy() {}
69.
70. private boolean contains(String value, String contextPath) {
71. Iterator ite = this.restrictedResources.iterator();
72.
73. while (ite.hasNext()) {
74. String restrictedResource = (String)ite.next();
75.
76. if ((contextPath + restrictedResource).equalsIgnoreCase(value)) {
77. return true;
78. }
79. }
80.
81. return false;
82. }
83.
84. private boolean authorize(HttpServletRequest req) {
85.
86. //处理用户登录
87. /* UserBean user = (UserBean)req.getSession().getAttribute(BeanNames.USER_BEAN);
88.
89. if (user != null && user.getLoggedIn()) {
90. //user logged in
91. return true;
92. }
93. else {
94. return false;
95. }*/
96. }
97. }
一、使浏览器不缓存页面的过滤器
1. import javax.servlet.*;
2. import javax.servlet.http.HttpServletResponse;
3. import java.io.IOException;
4.
5. /**
6. * 用于的使 Browser 不缓存页面的过滤器
7. */
8. public class ForceNoCacheFilter implements Filter {
9.
10. public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
11. {
12. ((HttpServletResponse) response).setHeader("Cache-Control","no-cache");
13. ((HttpServletResponse) response).setHeader("Pragma","no-cache");
14. ((HttpServletResponse) response).setDateHeader ("Expires", -1);
15. filterChain.doFilter(request, response);
16. }
17.
18. public void destroy()
19. {
20. }
21.
22. public void init(FilterConfig filterConfig) throws ServletException
23. {
24. }
25. }
二、检测用户是否登陆的过滤器
1. import javax.servlet.*;
2. import javax.servlet.http.HttpServletRequest;
3. import javax.servlet.http.HttpServletResponse;
4. import javax.servlet.http.HttpSession;
5. import java.util.List;
6. import java.util.ArrayList;
7. import java.util.StringTokenizer;
8. import java.io.IOException;
9.
10. /**
11. * 用于检测用户是否登陆的过滤器,如果未登录,则重定向到指的登录页面
12.
13.
14. * 配置参数
15.
16.
17. * checkSessionKey 需检查的在 Session 中保存的关键字
18.
19. * redirectURL 如果用户未登录,则重定向到指定的页面,URL不包括 ContextPath
20.
21. * notCheckURLList 不做检查的 URL列表,以分号分开,并且 URL 中不包括 ContextPath
22.
23. */
24. public class CheckLoginFilter
25. implements Filter
26. {
27. protected FilterConfig filterConfig = null;
28. private String redirectURL = null;
29. private List notCheckURLList = new ArrayList();
30. private String sessionKey = null;
31.
32. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
33. {
34. HttpServletRequest request = (HttpServletRequest) servletRequest;
35. HttpServletResponse response = (HttpServletResponse) servletResponse;
36.
37. HttpSession session = request.getSession();
38. if(sessionKey == null)
39. {
40. filterChain.doFilter(request, response);
41. return;
42. }
43. if((!checkRequestURIIntNotFilterList(request)) && session.getAttribute(sessionKey) == null)
44. {
45. response.sendRedirect(request.getContextPath() + redirectURL);
46. return;
47. }
48. filterChain.doFilter(servletRequest, servletResponse);
49. }
50.
51. public void destroy()
52. {
53. notCheckURLList.clear();
54. }
55.
56. private boolean checkRequestURIIntNotFilterList(HttpServletRequest request)
57. {
58. String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
59. return notCheckURLList.contains(uri);
60. }
61.
62. public void init(FilterConfig filterConfig) throws ServletException
63. {
64. this.filterConfig = filterConfig;
65. redirectURL = filterConfig.getInitParameter("redirectURL");
66. sessionKey = filterConfig.getInitParameter("checkSessionKey");
67.
68. String notCheckURLListStr = filterConfig.getInitParameter("notCheckURLList");
69.
70. if(notCheckURLListStr != null)
71. {
72. StringTokenizer st = new StringTokenizer(notCheckURLListStr, ";");
73. notCheckURLList.clear();
74. while(st.hasMoreTokens())
75. {
76. notCheckURLList.add(st.nextToken());
77. }
78. }
79. }
80. }
三、字符编码的过滤器
1. import javax.servlet.*;
2. import java.io.IOException;
3.
4. /**
5. * 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
6. */
7. public class CharacterEncodingFilter
8. implements Filter
9. {
10. protected FilterConfig filterConfig = null;
11. protected String encoding = "";
12.
13. public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException
14. {
15. if(encoding != null)
16. servletRequest.setCharacterEncoding(encoding);
17. filterChain.doFilter(servletRequest, servletResponse);
18. }
19.
20. public void destroy()
21. {
22. filterConfig = null;
23. encoding = null;
24. }
25.
26. public void init(FilterConfig filterConfig) throws ServletException
27. {
28. this.filterConfig = filterConfig;
29. this.encoding = filterConfig.getInitParameter("encoding");
30.
31. }
32. }
四、资源保护过滤器
1. package catalog.view.util;
2.
3. import javax.servlet.Filter;
4. import javax.servlet.FilterConfig;
5. import javax.servlet.ServletRequest;
6. import javax.servlet.ServletResponse;
7. import javax.servlet.FilterChain;
8. import javax.servlet.ServletException;
9. import javax.servlet.http.HttpServletRequest;
10. import java.io.IOException;
11. import java.util.Iterator;
12. import java.util.Set;
13. import java.util.HashSet;
14. //
15. import org.apache.commons.logging.Log;
16. import org.apache.commons.logging.LogFactory;
17.
18. /**
19. * This Filter class handle the security of the application.
20. *
21. * It should be configured inside the web.xml.
22. *
23. * @author Derek Y. Shen
24. */
25. public class SecurityFilter implements Filter {
26. //the login page uri
27. private static final String LOGIN_PAGE_URI = "login.jsf";
28.
29. //the logger object
30. private Log logger = LogFactory.getLog(this.getClass());
31.
32. //a set of restricted resources
33. private Set restrictedResources;
34.
35. /**
36. * Initializes the Filter.
37. */
38. public void init(FilterConfig filterConfig) throws ServletException {
39. this.restrictedResources = new HashSet();
40. this.restrictedResources.add("/createProduct.jsf");
41. this.restrictedResources.add("/editProduct.jsf");
42. this.restrictedResources.add("/productList.jsf");
43. }
44.
45. /**
46. * Standard doFilter object.
47. */
48. public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
49. throws IOException, ServletException {
50. this.logger.debug("doFilter");
51.
52. String contextPath = ((HttpServletRequest)req).getContextPath();
53. String requestUri = ((HttpServletRequest)req).getRequestURI();
54.
55. this.logger.debug("contextPath = " + contextPath);
56. this.logger.debug("requestUri = " + requestUri);
57.
58. if (this.contains(requestUri, contextPath) && !this.authorize((HttpServletRequest)req)) {
59. this.logger.debug("authorization failed");
60. ((HttpServletRequest)req).getRequestDispatcher(LOGIN_PAGE_URI).forward(req, res);
61. }
62. else {
63. this.logger.debug("authorization succeeded");
64. chain.doFilter(req, res);
65. }
66. }
67.
68. public void destroy() {}
69.
70. private boolean contains(String value, String contextPath) {
71. Iterator ite = this.restrictedResources.iterator();
72.
73. while (ite.hasNext()) {
74. String restrictedResource = (String)ite.next();
75.
76. if ((contextPath + restrictedResource).equalsIgnoreCase(value)) {
77. return true;
78. }
79. }
80.
81. return false;
82. }
83.
84. private boolean authorize(HttpServletRequest req) {
85.
86. //处理用户登录
87. /* UserBean user = (UserBean)req.getSession().getAttribute(BeanNames.USER_BEAN);
88.
89. if (user != null && user.getLoggedIn()) {
90. //user logged in
91. return true;
92. }
93. else {
94. return false;
95. }*/
96. }
97. }
相关推荐
本文将详细介绍标题提及的五种常用过滤器,并提供相关实现代码,帮助理解它们的工作原理和用途。 一、使浏览器不缓存页面的过滤器 在Web开发中,有时我们需要确保每次请求都能获取最新的页面内容,防止浏览器缓存...
本文将深入探讨Java中过滤器的几种使用方法及其应用场景,以帮助开发者更好地理解和应用这一特性。 ### 一、过滤器的基本概念 过滤器在Java Web应用中扮演着“守门人”的角色,它通过`javax.servlet.Filter`接口...
在Java Web开发中,过滤器(Filter)是一种非常实用的功能组件,它可以对用户的请求或响应进行预处理或后处理。通过实现`javax.servlet.Filter`接口,开发者可以自定义过滤器来执行特定的操作。本文将详细介绍两个...
管道过滤器模式是一种设计模式,它在软件工程中被广泛应用于数据处理,特别是在Java编程语言中。这种模式通过连接一系列的处理组件(过滤器),每个组件执行特定的任务,来实现复杂的数据转换。在这个场景中,"管道...
Java非法字符过滤器是一个实用的工具,它不仅有助于提升应用程序的安全性,还能维护数据的完整性。通过对非法字符的有效管理,开发者能够构建更加稳健、安全的应用环境。然而,合理的设计与适时的优化对于发挥其最大...
在Java中实现布隆过滤器,主要涉及到以下几个关键知识点: 1. **位数组**:布隆过滤器的核心是一个很长的位数组,初始化时所有位都设置为0。位数组的大小是根据预期要存储的元素数量和允许的误判率来确定的。 2. *...
过滤器和验证码是Java Web开发中的重要组成部分,主要用于提高应用程序的安全性和用户体验。下面将详细讲解这两个概念。 2.1.1 过滤器简介 过滤器(Filter)是Java Servlet API的一部分,它允许开发者在HTTP请求...
Java的IO流系统提供了一种称为过滤器(Filter)的机制,可以用来在数据传输过程中添加额外的处理步骤,比如编码转换。在这个实例中,我们可能会看到一个实现了`FilterInputStream`或`FilterOutputStream`的自定义类...
本文提出了一种基于Java的脏字过滤器设计,旨在检测网络中不良的内容,避免这些不良网络文化侵蚀青少年的心灵健康。该设计的主要目的是为了保护青少年免受不良网络文化的影响,培养他们的爱国意识、创新精神和良好的...
在Java中开发垃圾邮件过滤器,通常涉及到以下几个核心知识点: 1. **文本处理**:邮件内容通常是文本形式,因此理解和处理文本是基础。这包括分词(tokenization)、去除停用词(stop words)和标点符号,以及对...
以上就是关于Java Web开发中几种常用过滤器的详细介绍,包括字符编码过滤器、浏览器不缓存页面的过滤器以及检测用户是否登录的过滤器等。这些过滤器在实际项目中有着广泛的应用场景,掌握它们的使用方法对于提高系统...
Java中的拦截过滤器模式是一种强大的设计模式,允许高效地处理Web请求。该模式支持在过滤器链中应用多个... - 拦截过滤器是一种Java模式,它创建可插拔的过滤器,以标准方式处理常见服务,而无需更改核心请求处理代码。
Java过滤器,全称为Servlet Filter,在Java Web开发中扮演着重要的角色。它是Servlet API的一部分,主要用于在请求被Servlet处理之前或之后对请求进行预处理和后处理,以及在响应发送给客户端之前对其进行处理。过滤...
JAVA Web 过滤器 Filter 是一种强大且灵活的工具,用于在服务器上过滤与 servlet 或 JSP 页面相关的请求信息。它提供了多种选择,包括以常规方式调用资源、利用修改后的请求信息调用资源、调用资源并对其进行修改、...
Java 过滤器是 Java Servlet 规范中的一种机制,用于对请求和响应进行过滤。过滤器可以实现用户身份验证、日志记录、数据压缩等功能。创建一个过滤器需要两个步骤:创建 Filter 处理类和在 web.xml 文件中配置 ...
在学习Java技术的过程中,Servlet过滤器是一种重要的概念。过滤器是一种特殊的Java类,它可以拦截进入或离开Servlet或JSP页面的请求和响应。它能够检查和修改请求头信息、请求内容、响应头信息以及响应内容。Servlet...
Servlet过滤器是一种在请求到达目标资源(如Servlet或JSP页面)之前,对请求进行预处理的组件。它可以用于执行各种任务,包括但不限于:身份验证、授权、编码转换、压缩、日志记录等。通过在`web.xml`配置文件中定义...
4. **上下文提取过滤器**:一旦找到关键词,过滤器会提取关键词周围的上下文,通常包括前面和后面的几个单词,形成KWIC格式的输出。 5. **输出过滤器**:最后,程序将处理后的KWIC结果输出到控制台或新的文件中,供...
具体来说,该过滤器实现了以下几项核心操作: 1. **替换HTML标签为WAP兼容的标签**:例如,将`<p>`和`<div>`标签替换为` `,这是因为WAP标准不支持所有HTML标签,而` `作为换行标签,在大多数情况下可以提供...
通过阅读和理解这个示例,开发者可以学习如何初始化过滤器,以及如何对输入数据进行处理,以防止潜在的XSS攻击。 对于过滤过程,XXSProtect可能包含了以下功能: - **HTML标签检测**: 过滤器会检查输入字符串中...