`

JavaFilter的使用

阅读更多
使用filter使session失效的用户,重新跳转到登录页面:
1.前台简单的登录测试页面login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	<script type="text/javascript">
	   function submitForm(){
	      document.getElementById("form1").submit(); 
	   }
	</script>

  </head>
  
  <body>
    This is Login page. <br>
    <form action="login" method="post" id="form1" name="form1">
       UserName:<input type="text" id="userName" name="userName"/><input type="button" value="submit" onclick="submitForm()" id="submit1" />
    </form>
  </body>
</html>



2.struts.xml的配置信息:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC  
     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
    "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="default" extends="struts-default" namespace="/">
	    <action name="login" class="com.wl.action.test.LoginAction">
	        <result name="success">
	           /success.jsp
	        </result>
	    </action>
	</package>
</struts>


3.LoginAction如下:
package com.wl.action.test;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

	String userName;
	
	@Override
	public String execute() throws Exception {
		
		ActionContext context=ActionContext.getContext();
		Map session=context.getSession();
		System.out.println("userName="+userName);
		session.put("userName", userName);
		return SUCCESS;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}
}



4.过滤器FilterTest如下:
package com.wl.filter.test;

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.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class FilterTest implements Filter {

	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub

		HttpServletRequest httpReq=(HttpServletRequest)req;
		HttpServletResponse httpRes=(HttpServletResponse)res;
		HttpSession httpSession=httpReq.getSession();
		if(httpSession.getAttribute("userName")==null){
			httpRes.sendRedirect("../login.jsp");
		}else{
			chain.doFilter(req, res);
		}
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

}



5.配置Web.xml信息:
添加信息:
<!-- configure filter -->
  <filter>
     <filter-name>filterTest</filter-name>
     <filter-class>com.wl.filter.test.FilterTest</filter-class>
  </filter>
  <filter-mapping>
     <filter-name>filterTest</filter-name>
     <url-pattern>/filterJsp/*</url-pattern>
  </filter-mapping>
  <!-- configure session timeout one minute -->
  <session-config>
      <session-timeout>1</session-timeout>
  </session-config>


6.成功跳转页面success.jsp如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'success.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    Success. <br>
    <a href="filterJsp/ExtremeCompomentTest_1.jsp">Forward to Filter URL</a>
  </body>
</html>



7.配置了一个Session的监听器来监听Session是否失效
package com.wl.listener.test;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class HttpSessionListenerTest implements HttpSessionListener {

	public void sessionCreated(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub

		System.out.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS);
	}

	public void sessionDestroyed(HttpSessionEvent arg0) {
		// TODO Auto-generated method stub

		System.out.println("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
	}

}



8.WebRoot的目录结构:
----WebRoot
       ------filterJsp
                -----ExtremeCompomentTest_1.jsp
       ------login.jsp
       ------success.jsp

9.结果:
在IE中输入:http://localhost:8080/FileUpload/login.jsp如下显示

提交表单之后跳转的页面为:


等待1分钟之后,在Eclipse的控制台出现"EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"信息时,即Session已经失效了,再点击上面的"Forward to Filter URL"链接,这时候过滤器filter就会起作用,验证Session失效后,跳转到登录界面。

  • 大小: 3 KB
  • 大小: 1.6 KB
分享到:
评论

相关推荐

    java filter使用

    java filter使用配置项的详细说明代码示例

    java filter打印请求返回参数

    ### Java Filter 打印请求返回参数详解 #### 一、背景与目的 在Web开发过程中,经常需要在请求处理流程中增加一些通用的功能,比如日志记录、性能监控、安全控制等。Java Servlet规范提供了Filter机制来实现这些...

    Java Filter相关资料

    本资料包可能包含了关于Java Filter的详细使用方法和生命周期管理的文档或示例代码。 1. **Filter的基本概念** - Java Filter是一个实现了javax.servlet.Filter接口的类,它允许开发者在请求到达目标Servlet或JSP...

    java 中如何使用filter过滤器

    本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...

    java中filter的用法(过滤器)

    ### Java中的Filter(过滤器)使用详解 #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行后...

    java filter 执行过程例子

    通过巧妙地使用Filter,我们可以实现如登录验证、GZIP压缩、性能监控、安全控制等多种功能,提高应用的可维护性和扩展性。在实际项目中,经常可以看到Filter与其他Java Web技术(如Servlet、JSP、Spring MVC)协同...

    java filter

    ### Java Filter概述与应用 #### 一、Java Filter基本概念 在Java Web开发中,`Filter`是一种重要的组件,主要用于实现请求预处理和响应后处理的功能。它可以在客户端请求到达目标资源(如Servlet、JSP等)之前...

    java中的filter

    在Java Web开发中,`Filter`(过滤器)是一个至关重要的概念,它允许开发者在请求到达Servlet之前或从Servlet响应返回...对于初学者来说,理解和掌握`Filter`的原理及使用方法是成为专业Java Web开发者的重要一步。

    filter的使用 java 过滤器的几种使用方法

    在Java的Web开发中,过滤器(Filter)是一种非常实用的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前或响应离开容器之后进行处理。本文将深入探讨Java中过滤器的几种使用方法及其应用场景,以帮助...

    Java Filter 限制用户浏览权限

    本话题主要关注如何使用Java Filter来限制用户的浏览权限,确保只有经过身份验证和授权的用户才能访问特定的资源。这在构建安全的Web应用程序时至关重要。 首先,我们需要了解Java Filter的基本概念。Filter是...

    javaFilter自定义编码过滤器

    JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...

    javafilter简单的使用[借鉴].pdf

    3. `destroy()`:当Web应用停止或Filter不再使用时,调用此方法释放资源。 在`web.xml`部署描述符中,通过`&lt;filter&gt;`和`&lt;filter-mapping&gt;`元素定义Filter及其映射。例如,`&lt;dispatcher&gt;`元素用于指定Filter在哪些...

    Java登录注册列表小项目和Filter测试代码

    在Java编程领域,"Java登录注册列表小项目和Filter测试代码"是一个常见的实践项目,它涵盖了Web应用程序开发中的基础功能,如用户身份验证、权限控制以及数据操作。在这个项目中,开发者通常会创建一个简单的用户...

    javafilter[参考].pdf

    - `FORWARD`: 当Servlet或Filter使用`RequestDispatcher.forward()`方法将请求转发到其他资源时,Filter也会被调用。 - `INCLUDE`: 当Servlet或Filter使用`RequestDispatcher.include()`方法包含其他资源时,Filter...

    CommonFilter.java

    JEECG权限根据业务数据的机构字段,实现的工具类。可用于datagrid方法中,list页面过滤,add,update页面也可以

    Java filter过滤器在项目开发中的应用.doc

    【Java Filter过滤器在项目开发中的应用】 Java Filter(过滤器)是Java EE(现在称为Jakarta EE)规范的一部分,它允许开发者在请求被实际处理...理解并熟练使用Filter,对于提升Java EE项目开发的专业性至关重要。

    java自学===Filter类的应用,网站数量统计

    在本篇博客“java自学===Filter类的应用,网站数量统计”中,作者可能探讨了如何使用Filter来实现网站访问量的统计功能。 首先,Filter类位于javax.servlet包中,它是Servlet API的一部分,主要用于增强Web应用程序...

    JAVA通过Filter实现允许服务跨域请求的方法

    本文将详细介绍如何使用Java的Filter来实现跨域请求的允许。 ### 概念解析 **同源策略**:同源策略是浏览器的一项安全措施,防止恶意网站读取其他网站的数据,保护用户隐私。如果协议、域名和端口三者都相同,那么...

    防止sql注入的url过滤器【java filter】

    为了解决这一问题,我们可以利用Java的Filter机制来创建一个防止SQL注入的URL过滤器。下面将详细介绍这个过滤器的工作原理、配置方法以及如何有效地防止SQL注入。 首先,我们需要理解SQL注入的基本概念。SQL注入是...

Global site tag (gtag.js) - Google Analytics