监听事件和过滤器

监听包括三种情况,分别是HttpRequest、Session、ServletContext监听。

常用的是implements servletContextListener(全局变量)两个方法


public void contextInitialized(ServletContextEvent arg0)

arg0.getServletContext()

Session监听事件所示:


import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

import com.kettas.upp02.util.Constant;

public class SessionListener implements HttpSessionListener {

    public void sessionCreated(HttpSessionEvent ent) {

        HttpSession session = ent.getSession();

        synchronized (this) {

            ServletContext ctx = session.getServletContext();

            Integer counter = (Integer) ctx.getAttribute("sessionCount");

            ctx.setAttribute("sessionCount", counter.intValue() + 1);

            System.out.println(Constant.LOGO + "SessionCount:"

                    + (counter.intValue() + 1));

        }}

    public void sessionDestroyed(HttpSessionEvent ent) {

        HttpSession session = ent.getSession();

        synchronized (this) {

            ServletContext ctx = session.getServletContext();

            Integer counter = (Integer) ctx.getAttribute("sessionCount");

            ctx.setAttribute("sessionCount", counter.intValue() - 1);

            System.out.println(Constant.LOGO + "SessionCount:"

                    + (counter.intValue() - 1));

        }

    }

}

在web.xml文件中配置如下:


<listener>

    <listener-class>shop. SessionListener </listener-class>

</listener>

其他两个监听事件的实现同上并无二致。

过滤器 // 实现Filter接口


import java.io.IOException;

import javax.servlet.*;

public class EncodingFilter implements Filter{

//销毁时执行,没必要覆盖

    public void destroy() {}

    //发送请求时执行

    public void doFilter(ServletRequest request, ServletResponse response,

            FilterChain chain) throws IOException, ServletException {

        //设置发送请求和接收请求时的编码方式,统一才能达到过滤作用

        request.setCharacterEncoding("UTF-8");

        response.setCharacterEncoding("UTF-8");

        try {

            chain.doFilter(request, response); 请求转发

        } catch (RuntimeException e) {

            e.printStackTrace();

        }}

    //加载时执行,也没必要执行

    public void init(FilterConfig arg0) throws ServletException {}

}

web.xml文件中:

//配置当发生什么要的请求时,让那个过滤流执行操作


 <filter>

    <filter-name>encodingFilter</filter-name>

    <filter-class>filter.EncodingFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>encodingFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

原文地址:https://www.cnblogs.com/yuyu666/p/9743904.html

时间: 2024-10-18 04:28:41

监听事件和过滤器的相关文章

JAVAscript学习笔记 js句柄监听事件 第四节 (原创) 参考js使用表

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>句柄添加监听事件</title> <script type="text/javascript" src="tzy.js"></script> </head> <body>

浅谈postMessage多页面监听事件

最近做了一个Echarts和Highcharts多图多页面连动的效果,就用到postMessage 如下介绍: 最开始在最外围的页面也就是所有页面的父级页面添加postMessage监听事件以便监听下面子级页面的动态,代码: window.parent.addEventListener('message',function(e){ if(e.source != window.parent) return; var names = localStorage.getItem("toName"

ios ---键盘的监听事件

//在view将要出现的时候重载viewWillAppear方法添加通知 监听事件 keyboardWillShow:  keyboardWillHide: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:

js html 交互监听事件学习

事件处理程序(handler): HTML事件处理程序: <input type="button" value="Click Here" onclick="showMessage();" /> <script type="text/javascript"> function showMessage() { alert('Clicked!'); } JavaScript指定事件处理程序: <inpu

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On

Android——监听事件总结1

各种监听事件 1.按钮 Button(1)点击监听 btn_1.setOnClickListener(new View.OnClickListener() { (2)长按监听 btn_1.setOnLongClickListener(new View.OnLongClickListener() { 2.单选框 RadioGroup radio_gp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 3.复选

datePicker 及 timePicker 监听事件 获取用户选择 年月日分秒信息

public class MainActivity extends AppCompatActivity { private TimePicker timePicker; private DatePicker datePicker; private Calendar cal; private int year; private int month; private int day; private int hour; private int minute; @Override protected

Android中Preference的使用以及监听事件分析

> 在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准).归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个

监听事件 实现的四种方法

1.初始化当前所需要控件,如何初始化一个控件…………private Button xxxxfindViewById---返回的是一个View的对象…………需要强转成其子类Button对象findViewById---是如何查找View的Id…………通过R中的ID2.设置Button的监听器,通过监听器实现我们点击Button需要操作的事情 方式一: 匿名内部类实现事件监听:在按钮的setOnClickListener方法中new一个OnClickListener类,并在OnClickListen