文档章节

过滤器和监听器

学而时习之
 学而时习之
发布于 2015/04/20 14:08
字数 518
阅读 135
收藏 10
点赞 0
评论 1

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
博文 92
码字总数 42877
作品 0
西安
加载中

评论(1)

n
neozzzz
请教,楼主的图片是什么软件,文章写的不错
0

暂无相关文章

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

金山WPS发布了Linux WPS Office

导读 近日,金山WPS发布了Linux WPS Office中文社区版新版本,支持大部分主流Linux系统,功能更加完善,兼容性、稳定性大幅度提升。本次更新WPS将首次在Linux提供专业办公文件云存储服务,实...

问题终结者 ⋅ 昨天 ⋅ 0

springboot2输出metrics到influxdb

序 本文主要研究一下如何将springboot2的metrics输出到influxdb maven <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-bo......

go4it ⋅ 昨天 ⋅ 0

微信小程序 - 选择图片显示操作菜单

之前我分享过选择图片这个文章,但是我在实际开发测试使用中发现一个问题在使用 wx.chooseImage 选择照片显示出第一格是拍照,后面是相册里的图片。这种实现之前说过了,效果如下。 但是你从...

hello_hp ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部