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
分享到:
相关推荐
在【交通知识常识】部分,课程提醒孩子们在道路上行走时要遵守交通规则,不能在道路上玩耍或追逐,这不仅阻碍交通,还可能导致意外伤害。同时,孩子们要学会识别交通标志,如禁止行人通行、人行横道、非机动车道等,...
遗憾地通知您,根据提供的文件信息,无法生成有关“健康生活小常识100条”的具体知识点,因为【部分内容】中提供的信息并不包含实际的文本内容,而是一串难以解读的字符和数字。为了生成详实的知识点,我需要文件中...
【联想电脑使用小常识】 联想电脑使用小常识涵盖了日常维护和常见问题的解决方案,旨在帮助用户更好地使用和保护他们的联想电脑。以下是一些关键的知识点: 1. **系统变慢或报错**: - 系统变慢可能是因为安装...
电脑小知识。电脑硬件小常识 PPT
【电脑维修小常识全解析】 电脑维修涉及到许多不同的硬件组件,了解这些常见故障的解决方案能够帮助用户节省时间和金钱。以下是一些主要硬件组件及其可能出现的问题和处理方法: 1. **主板故障**:主板是计算机的...
健康体育运动小常识.pdf
"VC++基础知识及MFC常用小技巧小常识"涵盖了从C++语言的基础知识到MFC库的实用技巧。理解和掌握这些内容,对于Windows平台的软件开发至关重要。通过深入学习和实践,开发者能够更高效地编写功能丰富的应用程序,并...
网络安全小知识,防范各种诈骗 微信伪装身份诈骗 网络安全小常识全文共4页,当前为第2页。网络安全小常识全文共4页,当前为第2页。犯罪分子利用微信附近的人查看周围朋友情况,伪装成高富帅或白富美,骗取感情和信任后...
【功夫查-生活小常识】是一款致力于提供日常生活小知识的应用程序。从其名称可以看出,它旨在帮助用户快速查询和学习各种实用的生活技巧和常识。在快节奏的现代生活中,掌握这些小常识往往能让我们的日常生活变得...
工厂电气设备防爆小常识 一、防爆电气设备的重要性 在工厂环境中,尤其是石油化工、矿业等危险品生产领域,存在着大量的易燃易爆物质。这些物质一旦遇到火源,比如火花、高温或者电弧,就可能会引发爆炸或火灾事故...
以下是一些关于小学生身体健康的小知识,旨在帮助孩子们养成良好的生活习惯,预防疾病,保障健康成长。 1. 定期理发和洗头:保持头发清洁能有效去除头皮上的污垢、头屑和病菌,预防头癣和皮肤病,避免滋生头虱。这...
【生活小常识】 生活中的小窍门往往能为我们带来极大的便利,这些小常识不仅实用,还能帮助我们解决日常生活中的一些小困扰。...在校园广播站中分享这些小知识,不仅能帮助学生解决日常问题,也能增加他们的生活智慧。
老年人的健康是家庭和社会关注的重点,以下是一些关于老年人保持健康的小知识: 1. 饮食注意事项: - 空腹避免食用番茄,最好在饭后食用,以减少对胃部的刺激。 - 清晨醒来后先喝一杯水,有助于预防结石形成,...
以下是一些关键的安全小知识: 1. **防扒窃**:出门时,尽量将现金、贵重物品和重要证件分开放置,避免全部集中在一个包里。大额货币和信用卡应放在贴身口袋,减少被盗风险。避免携带过多引人注目的物品,行走时...
【饮食小常识1.pdf】这份...总的来说,这份资料提供了丰富的饮食小知识,旨在引导人们形成健康的饮食习惯,通过食物的选择和搭配来维护身体的各个器官和系统的健康。通过科学饮食,我们可以预防疾病,提高生活质量。
50条常用的ps小知识,解决新手的问题,初期快速掌握ps的入门tips
【小学生自我保护小常识】 这份PPT主要针对小学生,提供了他们在日常生活中的安全防护知识,尤其强调了交通安全。安全教育是每个孩子成长过程中不可或缺的一部分,它能够帮助孩子们建立正确的自我保护意识,预防...
【小学综合实践论文:学习应急安全小知识让生命之花绚丽绽放】 教育精品资料的核心在于提升学生的综合素质,而其中安全教育是不可忽视的一环。在小学阶段,将应急安全小知识融入综合实践活动,有助于培养学生的安全...
4. **安全使用煤气小知识** - 如怀疑煤气泄漏,闻到特殊气味,立即打开门窗通风,关闭煤气表前总开关,不要使用任何明火或电器。 - 不要在煤气设施附近堆放易燃物品,以防引发火灾。 - 检查煤气设备是否正常关闭...
幼儿园安全活动教案《乘车小常识》.pdf