您的位置:首页 > 职场人生

过滤器和事件监听

2011-09-22 21:20 106 查看
过滤器实现步骤:

1.新建一般java类 继承接口Filter 并实现接口中所有的方法,在方法doFilter()中 写入代码

2 在web.xml 中注册过滤器(将需要过滤的页面用一个文件夹装起来,配置时 过滤这个文件夹,从而避免过滤了不需要过滤的页面)

代码示例:

1.

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;

public class FirstFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest req, ServletResponse resp,

FilterChain chain) throws IOException, ServletException {

System.out.println("First 执行了过滤器!!!!");

//请求继续执行 否则将过滤的页面都不能执行

ain.doFilter(req, resp);

}

public void init(FilterConfig arg0) throws ServletException {

}

}

2.配置过滤器

<!--

<filter>

<filter-name>first_filter</filter-name>

<filter-class>com.zuxia.filter.过滤器类名</filter-class>

</filter>

<filter>

<filter-name>second_filter</filter-name>

<filter-class>com.zuxia.filter.SecondFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>second_filter</filter-name>

<url-pattern>/*</url-pattern>必须以“/”开头 (/表示项目的根目录(WebRoot)* 代表过滤该目录下的所有文件)

</filter-mapping>

<filter-mapping>

<filter-name>first_filter</filter-name>

<url-pattern>/*</url-pattern>必须以“/”开头 (/表示项目的根目录(WebRoot))

</filter-mapping>

-->

事件监听的步骤:

1. 编写Java类,实现指定的监听接口,重写接口中的方法。

application (ServletContextListener , ServletContextAttributeListener )

session (HttpSessionListener ,HttpSessionAttributeListener )

2. 在web.xml文件中配置监听器(注册监听器)

代码示例:

1. application

import javax.servlet.ServletContextAttributeEvent;

import javax.servlet.ServletContextAttributeListener;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

lic class TestApplicationListener implements ServletContextListener,ServletContextAttributeListener{

public void contextDestroyed(ServletContextEvent e) {

// //将访问的次数,写入到文件中

}

public void contextInitialized(ServletContextEvent e) {

File f = new File(TestApplicationListener.class.getClassLoader().getResource("count.txt").getPath().substring(1));//得到根目录的路径的方法(web服务器中)

try {

FileReader fr = new FileReader(f);

BufferedReader bf = new BufferedReader(fr);

String count = bf.readLine();

if(count!=null && !count.equals("")){

e.getServletContext().setAttribute("sumcount", count);

}

bf.close();

fr.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

public void attributeAdded(ServletContextAttributeEvent e) {

System.out.println("你添加了属性。。。。。。。");

System.out.println(e.getName()+":"+e.getValue());

}

public void attributeRemoved(ServletContextAttributeEvent arg0) {

// TODO Auto-generated method stub

}

public void attributeReplaced(ServletContextAttributeEvent e) {

// TODO Auto-generated method stub

File f = new File(TestApplicationListener.class.getClassLoader().getResource("count.txt").getPath().substring(1));

try {

FileWriter fw = new FileWriter(f);

fw.write(e.getServletContext().getAttribute("sumcount")+"");

fw.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

session :

import javax.servlet.ServletContext;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

public class TestSessionListener implements HttpSessionListener{

public void sessionCreated(HttpSessionEvent e) {

ServletContext application = e.getSession().getServletContext();

Object obj = application.getAttribute("sumcount");

int count = obj==null ? 1 : Integer.parseInt(obj+"")+1;

application.setAttribute("sumcount",count);

}

public void sessionDestroyed(HttpSessionEvent arg0) {

// TODO Auto-generated method stub

}

}

<!-- 注册监听器 -->

<listener>

<listener-class>com.zuxia.listener.TestApplicationListener</listener-class>

</listener>

<listener>

<listener-class>com.zuxia.listener.TestSessionListener</listener-class>

</listener>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息