日期:2014-05-19 浏览次数:20729 次
在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;
? ? }
?
?
1. 通过Java Script发送的表单,总是用UTF-8
编码的。
2. 直接在浏览器地址栏里输入包含参数的URL,根据不同的浏览器和操作系统的设置,会有不同的结果:
? ? ?例如,中文Windows中,无论ie还是firefox,经试验,默认都以GBK
来编码参数。IE对直接输入的参数,连URL encoding也没做。
? ? ?而在mac系统中,无论safari还是firefox,经试验,默认都是以UTF-8
来编码参数。
?
?
?
浏览器在提交表单时,如果发现被提交的字符不能以当前的charset来编码,浏览器就会把该字符转换成&#unicode;
这样的形式。例如,假设一个表单页面的content type为:text/html; charset=ISO-8859-1
。在这个页面的输入框中输入汉字“你好”,然后提交。你会发现,提交的汉字变成了这个样子:param=
"你好"
。
?
GET请求是最简单的请求方式。它的参数以URL编码的方式包含在URL中。当你在浏览器地址栏中敲入“ GET请求中的参数是以 可是,上面的请求在不同的Servlet引擎中,会产生不确定的结果。这是怎么回事呢? 原来,尽管 那么,应该怎样处理GET请求的参数呢?根据URL规范,URL中非US-ASCII的字符必须进行基于解析GET请求的参数
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
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
<set-locale>
会调用request.setCharacterEncoding(charset)
这个方法来设置input charset编码,然而根据Servlet API的规范,这个设定只能对request content生效,而不对URL生效。换句话说,request.setCharacterEncoding(charset)
方法只能用来解析POST请求的参数,而不是GET请求的参数。UTF-8
的URL编码。然而实际上,从浏览器到服务器,没有人完全遵守这些规范,于是便造成了一些混乱。目前应用服务器端,我们所遇到的,有下面几种不同的解码方案:
?
?
http://www.openwebx.org/docs/requestcontexts.html
?
?