在server端获取客户端ip地址:http://hi.baidu.com/brnz/blog/item/2a0cc7c096079138e5dd3bb5.html
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;
}
Charset编码基础
1. 通过Java Script发送的表单,总是用UTF-8
编码的。
2. 直接在浏览器地址栏里输入包含参数的URL,根据不同的浏览器和操作系统的设置,会有不同的结果:
例如,中文Windows中,无论ie还是firefox,经试验,默认都以GBK
来编码参数。IE对直接输入的参数,连URL encoding也没做。
而在mac系统中,无论safari还是firefox,经试验,默认都是以UTF-8
来编码参数。
参数值entity解码
浏览器在提交表单时,如果发现被提交的字符不能以当前的charset来编码,浏览器就会把该字符转换成&#unicode;
这样的形式。例如,假设一个表单页面的content type为:text/html; charset=ISO-8859-1
。在这个页面的输入框中输入汉字“你好”,然后提交。你会发现,提交的汉字变成了这个样子:param=
"你好"
。
解析GET请求的参数
GET请求是最简单的请求方式。它的参数以URL编码的方式包含在URL中。当你在浏览器地址栏中敲入“http://localhost:8081/user/login.htm?name=%E5%90%8D%E5%AD%97&password=password
”这样一个址址的时候,浏览器就会向localhost:8081
服务器出如下HTTP请求:
GET /user/login.htm?name=%E5%90%8D%E5%AD%97&password=password HTTP/1.1
Host: localhost:8081
GET请求中的参数是以application/x-www-form-urlencoded
方式和特定的charset编码的。假如用来编码URL参数的charset与应用的默认charset不同,那么你必须通过特殊的参数来指定charset(参见第 7.2 节 “<set-locale>
-设置locale区域和charset字符集编码”):
GET /user/login.htm?_input_charset=UTF-8&name=%E5%90%8D%E5%AD%97&password=password HTTP/1.1
可是,上面的请求在不同的Servlet引擎中,会产生不确定的结果。这是怎么回事呢?
原来,尽管<set-locale>
会调用request.setCharacterEncoding(charset)
这个方法来设置input charset编码,然而根据Servlet API的规范,这个设定只能对request content生效,而不对URL生效。换句话说,request.setCharacterEncoding(charset)
方法只能用来解析POST请求的参数,而不是GET请求的参数。
那么,应该怎样处理GET请求的参数呢?根据URL规范,URL中非US-ASCII的字符必须进行基于UTF-8
的URL编码。然而实际上,从浏览器到服务器,没有人完全遵守这些规范,于是便造成了一些混乱。目前应用服务器端,我们所遇到的,有下面几种不同的解码方案:
http://www.openwebx.org/docs/requestcontexts.html
分享到:
相关推荐
J2EE开发之常用开源项目小记
j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...
j2ee j2ee j2ee j2ee j2ee j2ee j2ee j2ee j2ee
J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件 J2EE课件
它包括了组成J2EE平台的技术以及描述如何开发J2EE组件并部署在J2EE软件开发包上。 这篇指南不是为J2EE服务器及工具供应商准备的,它没有解释如何实现J2EE结构,也没有解释J2EE软件包。J2EE规范描述了J2EE结构并可以...
j2ee 笔记 j2ee 笔记 j2ee 笔记 j2ee 笔记
j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例j2ee实例
J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE J2EE
j2ee课件j2ee课件j2ee课件j2ee课件j2ee课件j2ee课件
J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 ) 1.3--5.0 J2EE的jar包
NULL 博文链接:https://shuiyan.iteye.com/blog/611428
j2ee试题j2ee试题j2ee试题j2ee试题
j2ee规范j2ee规范j2ee规范j2ee规范j2ee规范j2ee规范
J2EE学习计划 J2EE 学习计划 J2EE 学习计划J2EE 学习计划J2EE 学习计划
J2EE 指南对于广大的Java 程序员来说是一份不可或缺的资料了。这篇导论对于初次碰到J2EE 的程序员来说有着同样的作用。它与Java 指南一样都是一例子为中心。
J2ee指导书J2ee指导书J2ee指导书J2ee指导书J2ee指导书J2ee指导书J2ee指导书
J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,J2EE,EJB,