var s = "网页可见区域宽:"+ document.body.clientWidth;
s += "<br />网页可见区域高:"+ document.body.clientHeight;
s += "<br />网页可见区域高:"+ document.body.offsetWeight +" (包括边线的宽)";
s += "<br />网页可见区域高:"+ document.body.offsetHeight +" (包括边线的宽)";
s += "<br />网页正文全文宽:"+ document.body.scrollWidth;
s += "<br />网页正文全文高:"+ document.body.scrollHeight;
s += "<br />网页被卷去的高:"+ document.body.scrollTop;
s += "<br />网页被卷去的左:"+ document.body.scrollLeft;
s += "<br />网页正文部分上:"+ window.screenTop;
s += "<br />网页正文部分左:"+ window.screenLeft;
s += "<br />屏幕分辨率的高:"+ window.screen.height;
s += "<br />屏幕分辨率的宽:"+ window.screen.width;
s += "<br />屏幕可用工作区高度:"+ window.screen.availHeight;
s += "<br />屏幕可用工作区宽度:"+ window.screen.availWidth;
s += "<br />页面高度:"+document.documentElement.clientHeight;
log.info(s);
<select name="select">
<option value="1">汉族</option>
<option value="2">蒙古族</option>
<option value="3">回族</option>
<option value="4">藏族</option>
<option value="5">维吾尔族</option>
<option value="6">苗族</option>
<option value="7">彝族</option>
<option value="8">壮族</option>
<option value="9">布依族</option>
<option value="10">朝鲜族</option>
<option value="11">满族</option>
<option value="12">侗族</option>
<option value="13">瑶族</option>
<option value="14">白族</option>
<option value="15">土家族</option>
<option value="16">哈尼族</option>
<option value="17">哈萨克族</option>
<option value="18">傣族</option>
<option value="19">黎族</option>
<option value="20">傈僳族</option>
<option value="21">佤族</option>
<option value="22">畲族</option>
<option value="23">高山族</option>
<option value="24">拉祜族</option>
<option value="25">水族</option>
<option value="26">东乡族</option>
<option value="27">纳西族</option>
<option value="28">景颇族</option>
<option value="29">柯尔克孜族</option>
<option value="30">土族</option>
<option value="31">达斡尔族</option>
<option value="32">仫佬族</option>
<option value="33">羌族</option>
<option value="34">布朗族</option>
<option value="35">撒拉族</option>
<option value="36">毛南族</option>
<option value="37">仡佬族</option>
<option value="38">锡伯族</option>
<option value="39">阿昌族</option>
<option value="40">普米族</option>
<option value="41">塔吉克族</option>
<option value="42">怒族</option>
<option value="43">乌孜别克族</option>
<option value="44">俄罗斯族</option>
<option value="45">鄂温克族</option>
<option value="46">德昂族</option>
<option value="47">保安族</option>
<option value="48">裕固族</option>
<option value="49">京族</option>
<option value="50">塔塔尔族</option>
<option value="51">独龙族</option>
<option value="52">鄂伦春族</option>
<option value="53">赫哲族</option>
<option value="54">门巴族</option>
<option value="55">珞巴族</option>
<option value="56">基诺族</option>
</select>
IP地址、手机归属和身份证查询接口
1. 查询手机:http://www.yodao.com/smartresult-xml/search.s?type=mobile&q=手机号码
2. 查询IP:http://www.yodao.com/smartresult-xml/search.s?type=ip&q=IP地址
3. 查询身份证:http://www.yodao.com/smartresult-xml/search.s?type=id&q=身份证号码
返回一个XML文件,通过程序去解析就可以得到相应的信息
SQL语句自动填充工具:SQL Assistant 3.5.21
http://chengyue2007.iteye.com/blog/482349
Java获取客户端真实IP地址的两种方法
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问 http://www.javapeixun.com.cn /index.jsp/ 时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046 /index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过 request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。
于是可得出获得客户端真实IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
可是当我访问http://www.5a520.cn /index.jsp/ 时,返回的IP地址始终是unknown,也并不是如上所示的127.0.0.1 或 192.168.1.110了,而我访问 http://192.168.1.110:2046/index.jsp 时,则能返回客户端的真实IP地址,写了个方法去验证。原因出在了Squid上。squid.conf 的配制文件 forwarded_for 项默认是为on,如果 forwarded_for 设成了 off 则:X-Forwarded-For: unknown
于是可得出获得客户端真实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
获得RemoteAddress:
request.getRemoteAddr();
获得tomcat版本号:
<%= application.getServerInfo() %>
或者:${pageContext.servletContext.serverInfo }
获得当前页面的全路径:
${pageContext.request.requestURL }
${pageContext.session.creationTime }
${pageContext.request.characterEncoding }
不能使用EL表达式的原因:
因为el表达式是Servlet2.4版才开始支持的功能,所以检查web.xml文件,
把
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
替换成
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
这样就开启使用EL表达式了。
使用jstl先要在页面添加:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
利用泛域名解析转向,论坛相关帖子很多:
http://sech.iteye.com/blog/419755
http://zhxmyself.iteye.com/blog/472324
http://neptune.iteye.com/blog/204602
http://stephen830.iteye.com/blog/277522
http://blog.ntsky.com/tomcat-domain.html
应用泛域名解析和java的filter实现对三级域名解析
http://zhxmyself.iteye.com/blog/472324
分享到:
相关推荐
【电脑使用小常识】 电脑是现代生活中不可或缺的工具,正确的使用和保养方法能极大地延长其使用寿命,提升工作效率。以下是一些关键的电脑使用和维护知识: 1. **计算机的摆放**: - 计算机应摆放在避免阳光直射...
在交通知识常识方面,课程内容做了详细的解读和引导。孩子们需要了解在道路上行走时必须遵守的交通规则,例如不能在道路上玩耍或追逐,以避免阻碍交通和造成意外伤害。此外,识别各种交通标志也是孩子们的必修课,如...
140个电脑小知识、小技巧 1. 重装Windows XP不需再激活 如果你需要重装Windows XP,通常必须重新激活。事实上只要在第一次激活时,备份好Windows\System32目录中的Wpa.dbl文件,就不用再进行激活的工作了。在重装...
非常有用的120个生活小常识 非常有用的120个生活小常识 非常有用的120个生活小常识 非常有用的120个生活小常识
电脑小知识。电脑硬件小常识 PPT
【电脑维修小常识全解析】 电脑维修涉及到许多不同的硬件组件,了解这些常见故障的解决方案能够帮助用户节省时间和金钱。以下是一些主要硬件组件及其可能出现的问题和处理方法: 1. **主板故障**:主板是计算机的...
健康体育运动小常识.pdf
"VC++基础知识及MFC常用小技巧小常识"涵盖了从C++语言的基础知识到MFC库的实用技巧。理解和掌握这些内容,对于Windows平台的软件开发至关重要。通过深入学习和实践,开发者能够更高效地编写功能丰富的应用程序,并...
网络安全小知识,防范各种诈骗 微信伪装身份诈骗 网络安全小常识全文共4页,当前为第2页。网络安全小常识全文共4页,当前为第2页。犯罪分子利用微信附近的人查看周围朋友情况,伪装成高富帅或白富美,骗取感情和信任后...
【功夫查-生活小常识】是一款致力于提供日常生活小知识的应用程序。从其名称可以看出,它旨在帮助用户快速查询和学习各种实用的生活技巧和常识。在快节奏的现代生活中,掌握这些小常识往往能让我们的日常生活变得...
因此,掌握一些联想电脑使用小常识,对于每一位联想电脑用户来说都是非常必要的。 首先,让我们来谈谈系统变慢或报错的问题。很多用户都遇到过电脑越用越慢,甚至出现各种错误提示的情况。这些问题往往与系统资源被...
面相小知识.txt 1,鼻子小 2,鱼缸不 3,脸颊粉 4,颧黑, 5,正西有 6,厨房不 7,寒背的 8,耳朵圆
生活中的科学小常识涵盖了...这些生活中的科学小知识,简单易行,且在日常生活中十分实用,不仅可以解决生活中的小困扰,还能维护身体健康。通过了解和应用这些知识,我们可以让生活更加便利,同时提高自我保健意识。
以下是一些关键的安全小知识: 1. **防扒窃**:出门时,尽量将现金、贵重物品和重要证件分开放置,避免全部集中在一个包里。大额货币和信用卡应放在贴身口袋,减少被盗风险。避免携带过多引人注目的物品,行走时...
【饮食小常识1.pdf】这份...总的来说,这份资料提供了丰富的饮食小知识,旨在引导人们形成健康的饮食习惯,通过食物的选择和搭配来维护身体的各个器官和系统的健康。通过科学饮食,我们可以预防疾病,提高生活质量。
【小学综合实践论文:学习应急安全小知识让生命之花绚丽绽放】 教育精品资料的核心在于提升学生的综合素质,而其中安全教育是不可忽视的一环。在小学阶段,将应急安全小知识融入综合实践活动,有助于培养学生的安全...
【日常生活养生小常识】 在快节奏的现代生活中,...以上养生小知识旨在提醒大家,生活中的一些小习惯和选择可以大大影响我们的健康。无论工作多么繁忙,都应关注自身健康,适当调整生活方式,让养生成为日常的一部分。
春天,这个万物复苏的季节,...通过今天的广播稿,希望大家都能够获得实用的生活小窍门和安全小知识,为自己的健康生活添砖加瓦。让我们从现在做起,从生活中的点点滴滴做起,成为一个懂得生活、懂得自我保护的智者。
以下是一些关键的安全小知识: 1. 防扒窃:在外出时,应将钱包、手机等贵重物品分开放置,避免全部集中在一个包里。大额现金和信用卡应放在贴身口袋,尽量不露出。避免携带过多现金,减少被扒窃的风险。在人多拥挤...