过滤器和事件监听
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>
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>
相关文章推荐
- 立即获得下载任务完成的消息通知。Android DownloadManager通过注册一个广播监听系统的广播事件完成此操作,在创建广播时候,需要指明过滤器为:DownloadManager.ACTIO
- vue.js 过滤器、ajax数据、事件监听实例
- JavaWeb中的过滤器和事件监听
- android 监听控件的单机和双击事件
- JavaFX监听窗口关闭事件
- GestureDetector手势监听不到滑动事件(onFling,onScroll)
- onItemLongClick事件的监听
- 关于使用NGUI事件监听3D物体
- ueditor加选择改变事件监听,便于对百度富文本编辑器做个性开发
- cocos2dx lua 使用cocostudio编辑的动画文件并监听帧事件
- 限制EditText输入字符及其事件监听
- Java GUI之事件监听与处理的匿名类实现方法
- javafx 可监听list的setAll方法 不触发监听事件
- Android中自定义ScrollView的滑动监听事件,并在滑动时渐变标题栏背景颜色
- cocos2d-x JS 弹出对话框触摸监听(吞噬点击事件遮挡层)
- 自动触发监听事件
- Qt 安装事件过滤器installEventFilter
- android 外部监听事件
- DrawerLaout监听事件
- Android中监听Phonegap的webview的start,finish等事件