告诉你jsp获取浏览者真实IP地址方法
.net获取IP地址的几种方式

.net获取IP地址的⼏种⽅式1.获取服务器IP地址:1) Local_Addrvar Local_Addr = Request.ServerVariables.Get("Local_Addr").ToString()2.获取客户端IP地址:X-Forwarded-For, X-Real-IP, remote_addr是http协议中⽤来表⽰客户端地址的请求头1) HTTP_REMOTEIPvar HTTP_REMOTEIP = HttpContext.Request.Headers["HTTP_REMOTEIP"];表⽰发出请求的远程主机的IP 地址,remote_addr表明客户端的IP,但它的值不是由客户端提供的,⽽是服务端根据客户端的ip指定的,当你的浏览器访问某个⽹站时,假设中间没有任何代理,那么⽹站的web(,Apache等)就会把remote_addr设为你的机器IP,若是你⽤了某个代理,那么你的浏览器会先访问这个代理,⽽后再由这个代理转发到⽹站,这样web服务器就会把remote_addr设为这台代理机器的IPhtml2) HTTP_X_FORWARDED_FORvar HTTP_X_FORWARDED_FOR = HttpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];简称XFF头,它表明客户端,也就是HTTP的请求端真实的IP,只有在经过了HTTP 代理或者负载均衡服务器时才会添加该项,正如上⾯所述,当你使⽤了代理时,web服务器就不知道你的真实IP了,为了不这个状况,代理服务器⼀般会增长⼀个叫作x_forwarded_for的头信息,把链接它的客户端IP(即你的上⽹机器IP)加到这个头信息⾥,这样就能保证⽹站的web服务器能获取到真实IPnginx3) HTTP_X_REAL_IPvar HTTP_X_REAL_IP = HttpContext.Request.ServerVariables["HTTP_X_REAL_IP"];⽤来记录服务器的地址,但是和X-Forwarded-For的不同,它不把记录添加到结尾,⽽是直接替换4) UserHostAddressvar UserHostAddress = erHostAddress;这个直接通过request获取客户端IP,注意客户端可以通过修改 UserHostAddress进⾏ip的伪造修改1、获取客户端IP:Request.ServerVariables.Get("Remote_Addr").ToString();2、获取客户端主机名:Request.ServerVariables.Get("Remote_Host").ToString();3、获取客户端浏览器:Request.Browser.Browser;4、获取客户端浏览器版本号:Request.Browser.MajorVersion;5、获取客户端操作系统:Request.Browser.Platform;6、获取服务器IP:Request.ServerVariables.Get("Local_Addr").ToString();7、获取服务器名:Request.ServerVariables.Get("Server_Name").ToString();。
“jsp内置对象”单元习题

“JSP内置对象”单元习题一、填空题1.JSP 中有9 种内置对象,它们分别是:___________、___________、response 对象、 pageContext 对象、 session对、 applicationt 对象、page 对象、 config 对象和 exception 对象。
2.Request对象可以使用___________方法获取表单提交的信息。
3.客户端向服务器端提交数据的方式通常有两种:一种是___________提交方式;另一种是___________提交方式。
4.在JSP 内置对象中,与请求相关的对象是______________________。
5.___________被封装成接口,它用来向客户端输出内容。
6.Out 对象中用来输出各种类型数据并换行的方法是______________________。
7.Out 对象中用来输出各种类型数据但不换行的方法是______________________。
8.Out 对象中用来输出一个换行符的方法是______________________。
9.Out 对象中用来关闭输出流的方法是______________________。
10.Out 对象中用来输出缓冲区里的数据的方法是______________________。
11.Out 对象中用来清除缓冲区里的数据,并把数据写到客户端的方法是________________。
12.Out 对象中用来清除缓冲区里的数据,但不写到客户端的方法是___________________。
13.Out 对象中用来获得缓冲区大小的方法是______________________。
14.Out 对象中用来获得缓冲区剩余空间大小的方法是______________________。
15.Out 对象中用来判断缓冲区是否自动刷新的方法是______________________。
一段能用来统计ip访问的代码(自用)包括所在地

⼀段能⽤来统计ip访问的代码(⾃⽤)包括所在地<jsp:useBean id="conn1" scope="session" class="china3cts.SnCms" /><%conn1.Conn();//访问IPString Ip=request.getRemoteAddr();//获取IP来源算法String ip1,ip2,ip3,ip4;int x=Ip.indexOf(".");ip1=Ip.substring(0,x);Ip=Ip.substring(x+1,Ip.length());x=Ip.indexOf(".");ip2=Ip.substring(0,x);Ip=Ip.substring(x+1,Ip.length());x=Ip.indexOf(".");ip3=Ip.substring(0,x);ip4=Ip.substring(x+1,Ip.length());String Ipone=ip1;String Iptwo=ip1+"."+ip2;long IpOK;IpOK=(long)Integer.valueOf(ip1).intValue()*256*256*256+Integer.valueOf(ip2).intValue()*256*256+Integer.valueOf(ip3).intValue()*256+Integer.valueOf(ip4).intValue(); String SIp="pp";SIp=Long.toString(IpOK);String sql="Select Top 1 country,city From sncms_ipaddress Where ip1<="+SIp+" and ip2>="+SIp+" Order By ip1";ResultSet rs=conn1.execute(sql) ;String country="地区不详";String city="地址不详";if (rs.next()){country=rs.getString("country");city=rs.getString("city");}if (city==null)city="";//统计⽤IPIp=request.getRemoteAddr();//来源String Reffer=request.getHeader("Referer");String RootPath=request.getRealPath("/") ;String URI=request.getRequestURI() ;String sPath=request.getQueryString() ;//分割操作系统等信息String userAgent="";userAgent=request.getHeader("User-Agent");String Browser = "unknown";String os = "unknown";//浏览器Browser=userAgent.split(";")[1].trim();os =userAgent.split(";")[2].trim();userAgent=userAgent.toLowerCase();//操作系统if (userAgent.indexOf("win") > -1){if (userAgent.indexOf("windows nt 5.0") > -1 || userAgent.indexOf("winnt5.0") > -1){os = "Windows 2000";}if (userAgent.indexOf("windows nt 5.1") > -1 || userAgent.indexOf("winnt5.1") > -1){os = "Windows XP";}if (userAgent.indexOf("win16") > -1 || userAgent.indexOf("windows 3.") > -1){os = "Windows 3.x";}}//统计⽤代理userAgent=request.getHeader("User-Agent");//out.print("IP:"+Ip+"<br>");//out.print("Reffer:"+Reffer+"<br>");//out.print("Browser:"+Browser+"<br>");//out.print("Os:"+os+"<br>");//out.print("UserAgent:"+userAgent+"<br>");//out.print("Country:"+country+"<br>");//out.print("City:"+city+"<br>");//out.print("RootPath:"+RootPath+"<br>");//out.print("URI:"+URI+"<br>");//out.print("sPath:"+sPath+"<br>");String Uid="test";//插⼊数据库String ISQL=null;ISQL="insert into SnCms_Logs (Uid,sPat,Pge,ref,Ip,Adr,Bro,Os,Age) values ('"+Uid+"','"+sPath+"','"+URI+"','"+Reffer+"', "; ISQL=ISQL+"'"+Ip+"','"+country+city+"','"+Browser+"','"+os+"','"+userAgent+"')";conn1.update(ISQL);%>。
获取当前IP地址,跳转到对应城市网站。

获取当前IP地址,跳转到对应城市⽹站。
博客迁移:1. [代码]index.php<?phpinclude './pinyin.php';//获取当前ipfunction getIp(){$onlineip='';if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')){$onlineip=getenv('HTTP_CLIENT_IP');} elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown')){ $onlineip=getenv('HTTP_X_FORWARDED_FOR');} elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown')){$onlineip=getenv('REMOTE_ADDR');} elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown')){ $onlineip=$_SERVER['REMOTE_ADDR'];}return$onlineip;}//获取城市信息apifunction getLocation($ip){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, "/iplookup/iplookup.php?format=json&ip=".$ip);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 30);$str = curl_exec($curl);curl_close($curl);return$str;}//当前ip地址$currentIP = getIp();//通过当前ip获取信息$getLocation = getLocation($currentIP);$currentInfo = json_decode($getLocation, true);//判断ip是否为有效if($currentInfo['ret'] == '-1'){$currentInfo['city'] = 'unknown';}//当前城市中⽂名$currentCityName = $currentInfo['city'];$currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');//城市拼⾳多⾳字switch($currentCityEName){case 'zhongqing':$currentCityEName = 'chongqing';break;case 'shenfang':$currentCityEName = 'shifang';break;case 'chengdou':$currentCityEName = 'chengdu';break;case 'yueshan':$currentCityEName = 'leshan';break;case 'junxian':$currentCityEName = 'xunxian';break;case 'shamen':$currentCityEName = 'xiamen';break;case 'zhangsha':$currentCityEName = 'changsha';case 'weili':$currentCityEName = 'yuli';break;case 'zhaoyang':$currentCityEName = 'chaoyang';break;case 'danxian':$currentCityEName = 'shanxian';break;default:$currentCityEName = $pin->Pinyin("$currentCityName",'UTF8');break;}//重定向浏览器header("Location: /?city=$currentCityEName");exit;2. [代码]pinyin.php<?php// 这⾥在OSC上找了别⼈分享的中⽂转换成拼⾳的⼀段代码。
关于JSP中各种地址的写法

1一般的地址前可加上一个如果这个地址是给服务器用的那么这个代表当前web应用如果这个地址是给浏览器用的那么这个代表当前网站
关于 JSP中各种地址的写法
1,一般的地址前可加上一个“/”,如果这个地址是给服务器用的,那么这个“/”代表当前Web应用,如果这个地址是给浏览器用的,那么这 个“/”代表当前网站。 例如:以当前Web应用myPJsp为例: a.当用转发时是给服务器用的:应写成"/MyJsp"; b.当用重定向时是给浏览器用的,应写成“/myProject/MyJsp". 2,${pageContext.request.contextPath}可以得到当前web应用的名称。 。。。
javaip白名单功能获取请求方ip的方法

javaip白名单功能获取请求方ip的方法Java中获取请求方IP的方法主要有以下几种:1. 使用HttpServletRequest对象:在Java Servlet中,可以通过HttpServletRequest对象获取请求方IP。
HttpServletRequest对象的getRemoteAddr()方法可以获取请求方的IP地址。
示例代码如下:```javaimport javax.servlet.http.HttpServletRequest;// 在Servlet中获取请求方IPpublic String getRemoteIP(HttpServletRequest request) {String ipAddress = request.getRemoteAddr();return ipAddress;}```2. 使用RequestContextHolder:在Spring框架中,可以通过RequestContextHolder来获取请求方IP。
RequestContextHolder是Spring提供的用于获取当前请求上下文的工具类。
示例代码如下:```javaimportorg.springframework.web.context.request.RequestContextHolder;importorg.springframework.web.context.request.ServletRequestAttributes;// 在Spring中获取请求方IPpublic String getRemoteIP() {ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();HttpServletRequest request = requestAttributes.getRequest();String ipAddress = request.getRemoteAddr();return ipAddress;}```3. 使用X-Forwarded-For请求头:在一些代理服务器或负载均衡器后面,请求的真实IP地址可能被隐藏在X-Forwarded-For请求头中。
jsp简介
一、jsp简介JSP (java Server Pages)是服务器端的脚本语言,是一种在HTML页面中加入Java语言而生成动态页面的技术:加入了新的标签(<%,%>,…)。
JSP是以Java和Servlet为基础开发而成的动态网页生成技术,它的底层实现是Java Servlet。
JSP页面由HTML代码和嵌入其中的Java代码所组成。
服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。
二、JSP的执行过程客户端请求JSP页面——>JSP Parser解析*.jsp编译为*.java——>javac命令编译成*.class——>执行class文件——>响应返回结果给客户端JSP代码中包含JSP元素和Template data两类。
Template data指的是JSP引擎不处理的部分,就是JSP引擎会把除在标记<%...%>以外的部分直接传递出去而不进行任何处理。
JSP在第一次或修改JSP文件后执行都会调用JSP Parser将*.jsp文件编译成servlet程序,所以会比较慢。
三、JSP基本语法1. 两种注释类型(1)HTML注释可以在JSP代码中添加一段HTML格式的注释,此注释发生到客户端,但不在页面上显示,语法如下:<!-- HTML格式的注释,在客户端查看源代码时可见--><!-- 此注释由<%=PRogrammer%>添加-->如果programmer为hackiller,则在客户端返回的注释是<!-- 此注释由hackiller添加-->(2)JSP注释写在JSP代码中,但不发送到客户端。
<%-- JSP注释,该注释会在JSP编译时被忽略掉--%><%-- /*Scriptlet中的多行注释*/ --%><%-- /**Scriptlet中的多行注释,可以用javadoc从java文件中提取出来*/ --%><%-- JSP的单行注释--%>2. 3个脚本元素(1)声明(Declaration)全局变量<%! int i=0; String str="Hello World!"; %>(2)表达式(Expression)在JSP代码中,经常使用表达式来输出变量的值,可以在任何地方<%! int a=1; int b=2; String str="Hello World!"; %><%=a+b%> <%=str>PS:不能用“;”号来作为表达式的结束符。
java获取ip的方法
(原创实用版4篇)编制人员:_______________审核人员:_______________审批人员:_______________编制单位:_______________编制时间:____年___月___日序言下面是本店铺为大家精心编写的4篇《java获取ip的方法》,供大家借鉴与参考。
下载后,可根据实际需要进行调整和使用,希望能够帮助到大家,谢射!(4篇)《java获取ip的方法》篇1在 Java 中,获取 IP 地址的方法因场景而异。
如果你是在服务器端获取客户端的 IP 地址,可以使用 request.getRemoteAddr() 方法。
但是如果客户端通过代理服务器访问,这个方法获取到的可能是代理服务器的 IP 地址。
此时可以使用 request.getHeader("X-Forwarded-For") 方法获取客户端真实的 IP 地址。
如果客户端未通过代理服务器访问,则可以直接使用request.getRemoteAddr() 方法获取客户端的 IP 地址。
如果你是在客户端获取自己的 IP 地址,可以使用 NetworkInterface 类和InetAddress 类。
首先获取网络接口列表,然后遍历列表中的每一个网络接口,使用 InetAddress 类获取该网络接口的 IP 地址。
最后将获取到的 IP 地址打印出来即可。
《java获取ip的方法》篇2在 Java 中,获取 IP 地址的方法因场景而异。
如果你是在服务器端获取客户端的 IP 地址,可以使用 request.getRemoteAddr() 方法。
但是如果客户端通过代理服务器访问,这个方法返回的将是代理服务器的 IP 地址。
此时可以使用 request.getHeader("X-Forwarded-For") 方法获取客户端真实的 IP 地址。
如果客户端未通过代理服务器访问,则可以直接使用 request.getRemoteAddr() 方法获取客户端的 IP 地址。
Jsp中操作Cookie及跨域访问的详细测试
做J2EE开发已经好几年了,对cookie的了解仅限于知道其使用方式、优缺点及一些简单的基本原理,工作中有些项目也使用cookie,基本上都是用于记录用户的登录信息(有很多知名网站用于记录客户个人信息或访问习惯的鄙视一下),再次访问时不需要再次登录,由于我是做企业应用的,因此一般cookie也会用于做sso的方案,这个确实非常方便,尤其是多机集群环境下,一个节点宕机,只要有另一个节点能提供服务,用户就不会有所感知,避免了session复制这种重量级方案。
网上关于cookie的资料比较多也比较杂,有讨论用各种语言操作cookie的,也有讨论用cookie如何实现sso的,也有变相实现cookie跨域访问的方案,今天准备用java/jsp做一个cookie操作的完整测试,一方面加深印象,一方面给做企业应用的新手朋友一个指引,只要耐心将下边各个测试过程跟下来,保证你对cookie会有一个更深层次的认识。
多的不说了,测试环境JDK1.5 + Eclipse3.6 + Tomcat5.0.28测试过程如下:开发2个web应用,分别为web1和web2,web1应用的web根下创建一个index.jsp,内容如下:<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><%Cookie[] cookies = request.getCookies();if(cookies != null && cookies.length > 0){for(int i=0;i<cookies.length;i++){Cookie cookie = cookies[i];System.out.println("web1----cookie name:"+cookie.getName()+" value:"+cookie.getValue());if("myCookieName".equals(cookie.getName())){//如果cookie已存在则删除掉cookie.setMaxAge(0);response.addCookie(cookie);}}}//用java代码创建cookie的方法如下,构造的参数是cookie的name和valueCookie cookie = new Cookie("myCookieName","myCookieValue1");cookie.setPath("/");response.addCookie(cookie);%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>This is web1's index.jsp</body></html>web2应用的web根下创建一个index.jsp,内容如下:<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><%Cookie[] cookies = request.getCookies();if(cookies != null && cookies.length > 0){for(int i=0;i<cookies.length;i++){Cookie cookie = cookies[i];System.out.println("web1----cookie name:"+cookie.getName()+" value:"+cookie.getValue());if("myCookieName".equals(cookie.getName())){//如果cookie已存在则删除掉cookie.setMaxAge(0);response.addCookie(cookie);}}}%><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>This is web2's index.jsp</body></html>2个应用基本一样,web1负责获取系统中的cookie然后输出name和value到控制台,并创建一个cookie,web2则只获取cookie然后输出name和value到控制台,这两个应用功能非常好理解。
java 获取本机ip的方法
java 获取本机ip的方法Java 获取本机IP的方法介绍在开发Java应用程序时,有时候需要获取本机的IP地址。
本文将介绍几种获取本机IP的方法。
方法一:通过InetAddress类获取使用Java的InetAddress类可以获取到本机的IP地址。
以下是获取本机IP的代码片段:import ;import ;public class IPAddressExample {public static void main(String[] args) {try {InetAddress address = ();("IP Address: " + ());} catch (UnknownHostException e) {();}}}方法二:通过NetworkInterface类获取另一种获取本机IP地址的方法是使用Java的NetworkInterface 类。
以下是具体的代码示例:import ;import ;import ;import ;public class IPAddressExample {public static void main(String[] args) {try {Enumeration<NetworkInterface> networkInterfa ces = ();while (()) {NetworkInterface networkInterface = (); Enumeration<InetAddress> inetAddresses = ();while (()) {InetAddress address = ();if (!() && ()) {("IP Address: " + ());}}}} catch (SocketException e) {();}}}方法三:通过System类获取Java的System类提供了一个systemProperties变量,它包含一些系统相关的属性,其中就包括本机的IP地址。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
告诉你jsp获取浏览者真实IP地址方法
我们知道在JSP里,获取网页客户端的IP地址的方法是:request.getRemoteAddr(),这
种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获
取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获
取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户
端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的
HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和
原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问
到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访
问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中
通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的
IP地址。
步骤/方法
1. 于是可得出获得客户端真实IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
2. 获得客户端真实IP地址的方法二:
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{
ip = request.getRemoteAddr();
}
return ip;
}
可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,
而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,
192.168.1.100
用户真实IP为: 192.168.1.110