文档章节

过滤器和监听器

学而时习之
 学而时习之
发布于 2015/04/20 14:08
字数 518
阅读 136
收藏 10

1、概述

2、拦截器

3、过滤器的生命周期

4、初始化参数和过滤器链

5、过滤器的使用场合

 6、监听器

web应用程序事件模型的一部分,当web应用中的某些状态发生改变时,会产生相应的事件,监听器可以接收这些事件

并且在事件发生时做一些相关的处理。

样例:

package com.ljb.constants;
public class Constants {
 public static int ONLINE_USER_COUNT = 0;// 在线用户数
}
package com.ljb.listener;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import com.ljb.constants.Constants;
/**
 * Application Lifecycle Listener implementation class User
 *
 */
@WebListener
public class User implements HttpSessionBindingListener {
 private String username;
 
 
    public String getUsername() {
  return username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 /**
     * Default constructor. 
     */
    public User() {
        // TODO Auto-generated constructor stub
    }
 /**
     * 从session中删除时调用
     * @see HttpSessionBindingListener#valueUnbound(HttpSessionBindingEvent)
     */
    public void valueUnbound(HttpSessionBindingEvent arg0) {
        Constants.ONLINE_USER_COUNT--;
    }
 /**
     * User对象存入session时自动调用
     * @see HttpSessionBindingListener#valueBound(HttpSessionBindingEvent)
     */
    public void valueBound(HttpSessionBindingEvent arg0) {
       Constants.ONLINE_USER_COUNT++;
    }
 
}

enter.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="doEnter.jsp" method="post">
  用户名:<input type="text" name="username"/>
  <input type="submit" value="进入"/>
 </form>
</body>
</html>

doEnter.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.ljb.listener.User" %>
 <%
  String name = request.getParameter("username");
  System.out.println(name);
  if (name == null || name.equals("")) {
   System.out.println("----------------1");
   response.sendRedirect("enter.jsp");
  } else {
   System.out.println("----------------2");
   User user = new User();
   user.setUsername(name);
   session.setAttribute("user", user);// 对象存入session会激发监听器中valueBound方法的运行
   response.sendRedirect("online.jsp");
  }
 %>

online.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.ljb.listener.User,com.ljb.constants.Constants" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <%
  User user = null;
  if (session.getAttribute("user") == null) {
   response.sendRedirect("enter.jsp");
  } else {
   user = (User)session.getAttribute("user");
 %>
 欢迎你:<%=user.getUsername() %>
 此时在线人数为:<%=Constants.ONLINE_USER_COUNT %>
 <a href="doOut.jsp">离开</a>
 <%} %>
</body>
</html>

doOut.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
 <%
  session.invalidate();
  response.sendRedirect("enter.jsp");
 %>
</body>
</html>

执行结果:

欢迎你:123 此时在线人数为:2 离开

7、小结

 

8、初识MVC

 

 

© 著作权归作者所有

共有 人打赏支持
学而时习之
粉丝 29
博文 93
码字总数 42877
作品 0
西安
私信 提问
加载中

评论(1)

n
neozzzz
请教,楼主的图片是什么软件,文章写的不错
0
Java程序员从笨鸟到菜鸟之(二十一)java过滤器和监听器详解

过滤器 1、Filter工作原理(执行流程) 当客户端发出Web资源的请求时,Web服务器根据应用程序配置文件设置的过滤规则进行检查,若客户请求满足过滤规则,则对客户请求/响应进行拦截,对请求...

长平狐
2012/11/12
103
0
spring boot(7)监听器、过滤器和拦截器

1 监听器、过滤器和拦截器 1.1 监听器 监听器Listener,它是实现了javax.servlet.XXXListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要...

刘胜球
2017/10/29
0
0
CAS之5.2x版本之Jira单点登录-yellowcong

将Cas和jira搞一起,他们都是一家公司的产品。将Jira和cas整合在一起,主要有一下几步骤:1、配置web.xml,需要注意的是过滤器和监听器的位置,是得放在指定的地方。2、配置seraph-config.xml...

yelllowcong
04/13
0
0
《Genesis-3D游戏引擎系列教程-高级篇》1:后期效果

注:本系列进阶教程仅针对引擎编辑器:v1.2.2及以下版本 音频处理 素材资源 工程文件 声音是游戏中非常重要的组成部分,Genesis-3D提供了多样的声音特效处理方式,方便用户制作丰富多彩的声音...

Genesis-3D
2014/01/24
0
0
Java面试题之JavaWeb高级

一、Filter和Listener Filter:从J2EE1.3开始,Servlet2.3规范中加入对Filter的支持。Filter就称之为过滤器,它是Servlet技术中最激动人心的技术WEB开发人员通过Filter技术可以对web服务器管理...

年轻诠释我们的梦想_705b
06/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
27
3
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
19
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
24
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
29
0
CompletableFuture get方法一直阻塞或抛出TimeoutException

问题描述 最近刚刚上线的服务突然抛出大量的TimeoutException,查询后发现是使用了CompletableFuture,并且在执行future.get(5, TimeUnit.SECONDS);时抛出了TimeoutException异常,导致接口响...

xiaolyuh
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部