RequestListener 学习笔记-记录来访者IP


import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;

public class CallListener implements ServletRequestListener {
private static Map<String, String> map = new HashMap<String, String>();

// 实例变量
private int counter;
static {
map.put("127.0.0.1", "北京");
map.put("192.168.11.96", "深圳");
map.put("192.168.11.113", "中山");
map.put("192.168.11.124", "珠海");
}

@Override
public void requestInitialized(ServletRequestEvent sre) {
// 取得事件源,即ServletRequest对象
HttpServletRequest request = (HttpServletRequest) sre
.getServletRequest();

// 取得客户端IP
String ip = request.getRemoteAddr();

// 通过ip查询归属地
String address = map.get(ip);
if (address == null) {
address = "北京";
}
// 通过ip查询归属地
request.setAttribute("ip", ip);
request.setAttribute("address", address);
}

@Override
public void requestDestroyed(ServletRequestEvent sre) {

}

}

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP ‘index.jsp‘ starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>

  <body>
   您的IP地址:${ip }<br/>
   归属地:${requestScope.address}<br/>
  </body>
</html>

原文地址:http://blog.51cto.com/357712148/2105691

时间: 2024-11-10 07:27:08

RequestListener 学习笔记-记录来访者IP的相关文章

Activiti 学习笔记记录(三)

上一篇:Activiti 学习笔记记录(二) 导读:上一篇学习了bpmn 画图的常用图形标记.那如何用它们组成一个可用文件呢? 我们知道 bpmn 其实是一个xml 文件

学习笔记之TCP/IP协议的传输方式

一.通过网络发送数据,大致可以分为面向有连接与面向无连接两种类型: 1.面向无连接型包括以太网. IP.UDP等协议. 2. 面向有连接 型包括ATM.帧中继.TCP等 协议. 通过一张图了解一下: 面向有连接型 面向有连接型中,在发送数据之前,需要在收发主机之间连接一条通信线路 面向有连接型就好比人们平常打电话,输入完对方电话号码拨出之后,只有 对端拿起电话才能真正通话,通话结束后将电话机扣上就如同切断电源.因此在 面向有连接的方式下,必须在通信传输前后,专门进行建立和断开连接的处理.如果与对

Activiti 学习笔记记录(二)

上一篇:Activiti 学习笔记记录 导读:对于工作流引擎的使用,我们都知道,需要一个业务事件,比如请假,它会去走一个流程(提交申请->领导审批---(批,不批)---->结束),Activiti就是来走这个流程的.所以我们还需要将Activiti 和 业务结合起来,即部署定义(画一个流程图,生成 bpmn 格式的文件).本章,就来讲 bpmn 的图怎么画? 一.什么是 bpmn 业务流程建模标记法 BPMN (Business Process Model and Notation),是工作

学习笔记之TCP/IP协议分层与OSI参考模型

1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 最终提出了作为通信协议设计指标的OSI参考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些分层,使得那些比较复杂的网络协议更加简单化. 在这一模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务.上下层之间进行交互时所遵循的约定叫做"接口".同一层之间的交互所遵循的约定叫做"协议". 协议分层就如同计算机软件中的模块化开发.

APUE学习笔记-记录二

这次回顾APUE中第三四章的内容,主要是文件I/O操作相关的接口函数.    UNIX系统的文件I/O是不带缓冲的I/O,不带缓冲是指每个read和write都调用系统内核的一个系统调用. 1.文件描述符 UNIX I/O的所有函数都是基于文件描述符来操作的.那什么是文件描述符呢?文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.该文件描述符fd是所有UNIX I/O函数的操作对象.UNIX系统把文件描述符0与进程标准输入关联,把文件描述符1与进程标准

计算机网络学习笔记--网络层之IP地址与子网

IPv4地址: 我们知道在网络层(TCP/IP体系结构的网际互联层),最重要的一个协议就是IP协议,现在正处于IPv4和IPv6的过渡时期,但目前来说,IPv4仍为主流,所以主要讲Ipv4. IP地址基本格式: 计算机内部IP地址的格式是32位的二进制数表示的,为了让人们看起来方便,通常采用点分十进制来表示IP地址,如192.168.1.25,其中用来分隔各段的那个点,也是为了方便人们阅读加上的,计算机内部并没有这个点. 公网IP地址和私网IP地址: 公网Ip地址是指可以在广域网上直接使用,直接

FPGA学习笔记之FIFO IP核

FIFO总结文档 何为FIFO .? FIFO(First In First Out ) 先进先出是一个常用于数据缓存的一个数据缓冲器. fifo主要有WRREQ(写信号)WRclk(写时钟)data(写数据)wrfull(写满标志)wrempty(写空标志)wrusedw(告知里面还有多少数据) Rdreq(读信号)rdclk(读时钟)rdfull(读满标志)rdempty(读空标志)rdusedw(告知里面数据个数) 以上所有信号全是高电平有效. 为什么要用fifo? 在项目设计中,我们通常

CCNA学习笔记1---OSI TCP/IP模型

一.网络中实际应用分类 成块数据流:FTP.TFTP.库存更新 无需直接人工交互 带宽很重要,但并非关键性因素 交互式数据流:库存查询,数据库更新 人机交互 响应时间 事实应用数据流:VoIP 视频 人与人的交互 端到端的延时至关重要 二.网络拓扑分类 目前,实际中都是星型,前两种只理论上概念 上图是扩展星型.优点:无中心,分布式.高可用避免单点故障造成网络瘫痪. 三.OSI七层模型 ◆ 理解端到端数据传输的流程 分层优点:1.促进标准化工作,允许各供应商独立开发 2.各层间独立,把网络操作分成

Linux netfilter 学习笔记 之十一 ip层netfilter的NAT模块初始化以及NAT原理

1.NAT的原理 NAT会修改数据包的ip层的源或者目的ip地址.在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能. 1.1 SNAT 源目的地址转换,即对ip数据包的源ip地址进行转换操作,典型的应用即是网关,网关的lan侧会下挂至少两台设备,而这两台设备的ip地址都是lan侧地址,而lan侧设备又要访问公网,这就需要SNAT大展身手了,通过将lan侧发送的ip数据包的源ip地址转换成公网地址即可以访问公网了. 1.2 DNAT 目的地址转换主要是将ip数据包的目的ip地址进行修改