- 浏览: 532152 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (294)
- Java基础 (40)
- 架构分析 (37)
- 开发心得 (22)
- 架构乐园 (12)
- Java Web (6)
- 大牛专区 (5)
- 转载专区 (40)
- 小技巧 (16)
- Linux专区 (8)
- linux (3)
- Spring (2)
- N (1)
- 前台JS (1)
- SAP NETWEAVER (3)
- JMS (4)
- queue (1)
- 数据模型 (2)
- oracle (2)
- sqlserver (2)
- ubuntu (2)
- install gcc (1)
- MEMCACHED (2)
- SQLSERVER 驱动 (1)
- JVM GC 调优 (1)
- 服务器运维 (1)
- activiti 国际化 中文 (1)
- activiti (1)
- 前端开发 (1)
- tar.gz (1)
- Web安全 (1)
- CSRF (1)
- 技术架构 (4)
- 性能指标 (1)
- 响应时间 (1)
- 淘宝 (1)
- linux安装 (1)
- lucene (1)
- Mongodb (1)
- gis (1)
- 微信授权 code access_token open_id (1)
- Redis java 获取 (1)
- HTTP 跨域 同源策略 cookie (1)
- java 加密 3DES (1)
- CROS (1)
- Cookie (1)
- Rest (1)
- 跨域资源共享 (1)
- 3DES (1)
- Effective java读后感 (1)
- nginx (1)
- Tengine 开发 (1)
- HTTP/1.1 废弃 javaWEB (1)
- 支付宝 支付状态 (1)
- maven jdk (1)
- 应用宝统一链接 (1)
- git (2)
- git 代码上传 (1)
- ubuntu 安装 mysql 5.6 (1)
- Linux 命令学习 (3)
- Linux 命令 60 (2)
- linux 命令 (2)
- linux nginx 安装 (1)
- grant revoke (1)
- linxu jdk profile (1)
- git 使用 (1)
- 架构设计 (1)
- 上海居转户 居转户 (1)
- wind (1)
- elastic-job (1)
- Mysql (1)
- 个人站点 (1)
- nginx lua waf 实现 (1)
- github 算法指南 (1)
- go (1)
- MapReduace 大数据 (1)
- 架构PPT (1)
最新评论
-
jingchh:
帅哥, 这个类是哪个包下面的呢? 应该下载哪个jar包,谢谢~ ...
StringUtils工具类的常用方法 -
Nabulio:
StringUtils工具类的常用方法 -
yuanyuan2597:
那请问,按照你的方法进行修改调用。SELECT locatio ...
根据经纬度实现附近搜索Java实现 -
yangguo:
这个经理有病,埋伏打他一顿。
复试 等电话 -
emparadise329:
进一步学习了子类与父类间的关系
Java 子类对象实例化 面试题
在IIS+Weblogic整合系统中,像移动网关一样,iisforward这个ISAPI过滤器也会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。
实际的iisforward附加头如下:
WL-Proxy-Client-IP=211.161.1.239
Proxy-Client-IP=211.161.1.239
X-Forwarded-For=211.161.1.239
WL-Proxy-Client-Keysize=
WL-Proxy-Client-Secretkeysize=
X-WebLogic-Request-ClusterInfo=true
X-WebLogic-KeepAliveSecs=30
X-WebLogic-Force-JVMID=-327089098
WL-Proxy-SSL=false
综上,正确作法如下:
public String getIpAddr(HttpServletRequest request) {
String ip=request.getHeader("X-Forwarded-For");
if(ip == null || ip.length() == 0) {
ip=request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0) {
ip=request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0) {
ip=request.getRemoteAddr();
}
return ip;
}
如此一来,就可适应各种情况,包括通过移动网关访问(会附加X-Forwarded-For)。通过这个简单例子可以看出封装和抽象的重要性。
实际的iisforward附加头如下:
WL-Proxy-Client-IP=211.161.1.239
Proxy-Client-IP=211.161.1.239
X-Forwarded-For=211.161.1.239
WL-Proxy-Client-Keysize=
WL-Proxy-Client-Secretkeysize=
X-WebLogic-Request-ClusterInfo=true
X-WebLogic-KeepAliveSecs=30
X-WebLogic-Force-JVMID=-327089098
WL-Proxy-SSL=false
综上,正确作法如下:
public String getIpAddr(HttpServletRequest request) {
String ip=request.getHeader("X-Forwarded-For");
if(ip == null || ip.length() == 0) {
ip=request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0) {
ip=request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0) {
ip=request.getRemoteAddr();
}
return ip;
}
如此一来,就可适应各种情况,包括通过移动网关访问(会附加X-Forwarded-For)。通过这个简单例子可以看出封装和抽象的重要性。
发表评论
-
eclipse 插件式安装 maven
2016-06-02 16:46 613以下为补充内容: 由于Maven项目地址经常变动,以上ma ... -
HTTP 接口设计指南
2016-01-12 15:04 3980# HTTP 接口设计指北 * 文档主要目的是为设计 ... -
IP 查询开放API
2015-10-12 19:57 973今天项目要用到 查询访问网站用户的IP 然后网上查询了 资料还 ... -
freemarker 数字输出中的逗号问题
2015-08-17 11:50 1653分类: Freemarker2012-04-23 1 ... -
redis cli 客户端连接
2015-07-27 15:31 996Last login: Mon Jul 27 15:31:4 ... -
MySQL 建立索引
2015-05-05 09:16 783索引是一种特殊的数据结构,可以用来快速查询数据库的特定记录, ... -
[DB][MySql]关于取得自增字段的值、及@@IDENTITY 与并发性问题
2015-04-07 12:43 1583对于刚从Oracle转向MySql的人都会为,MySql中没 ... -
POI 合并单元格
2014-12-25 10:01 1135在用poi在EXECL报表设计的时候,遇到单元格合并问题,用 ... -
两个相同结构表 数据的 对复制
2014-12-09 17:43 810insert into TRP_MEMBER_RECOMMEN ... -
文章主要是介绍DB2取得当前时间的正确解析,如果你是DB2取得当前时间的内容解析,如果你是这方面的新手,对DB2取得当前时间的正确解的相关实际应用不是很了解的话
2013-09-26 19:05 760文章主要是介绍DB2取得当前时间的正确解析,如果你是DB2取 ... -
Lucene 3.X 自定义排序
2013-09-18 16:26 1289Lucene 3.X 自定义排序 发表于 2012 年 ... -
DB2时间函数
2013-08-12 20:11 2648DB2时间函数 DB2时间函数简单总结: ... -
linux 新建用户、用户组 以及为新用户分配权限
2013-08-07 19:14 947linux 新建用户、用户组 以及为新用户分配权限 P ... -
Lucene的分页查询
2013-08-06 16:05 848Lucene的分页查询 Posted on 2012- ... -
lucene3.0_IndexSearcher的基础使用及注意事项
2013-08-06 15:05 960lucene3.0_IndexSearcher的基础使用及注 ... -
ibatis db2 insert模板
2013-05-07 20:32 1147iBatis and DB2 INSERT statemen ... -
DB2 -创建用户和组,数据库
2013-05-06 18:05 72391、增加一个操作系统用户 groupadd test--- ... -
oracle 创建用户和表空间
2013-01-15 18:15 11031,创建临时表空间create temporary tab ... -
Java Web 胡言乱语 之--- JSP标准标签库
2012-05-08 09:27 1080JSTL 主要的标签分类: 1,核心标签库 c: ... -
JSP标签开发--详解
2012-05-04 17:42 4296标签开发之几大步骤: ...
相关推荐
这段代码遍历所有网络接口,跳过无效、回环和虚拟接口,然后筛选出本地站点的IP地址。 3. **获取应用的路径**: - 在JSP和Servlet中,可以通过`request.getRequestURI()`获取请求的URI,`application.getRealPath...
- 如果项目不包含网页端,则跳过此步骤,直接进行下一步骤。 #### 3.3 测试App功能 - 使用雷电模拟器或其他Android模拟器运行App,检查其能否正常登录并使用。 - 如果没有App,可直接执行下一步骤。 #### 3.4 ...
5. 安装完成后,跳过注册步骤,继续安装过程。 接下来是MySQL的配置环节: 1. 启动配置向导,选择“Detailed Configuration”以便详细配置。 2. 选择服务器类型,根据实际需求,如开发环境选择“Developer Machine...
进入解压后的dubbo-admin目录,执行`mvn package -Dmaven.skip.test=true`,这会跳过测试并生成war文件。 3. **配置与启动**: - 将生成的war文件(或者预编译的war)拷贝到Web服务器的webapps目录下,启动Web...
12. 自动增长属性:在MySQL或类似的数据库系统中,`AUTO_INCREMENT`会自动为新插入的记录提供唯一值,即使插入指定的ID,也会跳过。 13. Java类与对象:成员变量在对象初始化后通常是不可修改的。 14. Web服务器...
这条命令指定了部署到Tomcat的方式以及跳过单元测试等参数。根据不同的操作系统环境,可能需要对这条命令做适当的调整。 通过以上五个步骤的详细配置,我们可以实现Jenkins与Tomcat之间的自动化部署流程。这不仅...
- 跳过CD检查 - 选择语言(简体中文) - 创建分区并格式化 - 创建/boot(100MB) - 创建swap(至少等于内存大小) - 创建/home(55%-60%的磁盘空间) - 其余空间挂载到"/" **网络配置:** 1. 修改IP地址、...
2. **IP地址检查**:记录用户的登录IP地址,当发现新登录请求的IP与当前session的IP不匹配时,认为是异地登录。 3. **心跳机制**:定期发送心跳请求保持session活跃,一旦检测到两个心跳源,表明存在异地登录。 4....
4. PowerPoint文本效果:在PowerPoint中,设置文本字体时,用户可以选择各种效果,如阴影、发光、斜体等,也可以直接跳过这些效果直接设置基础样式。 5. VFP常量类型:Visual FoxPro(VFP)中的常量类型包括数值型...
7. **continue语句**:在循环体中,continue语句用于跳过当前循环的剩余部分,直接进入下一次循环,而不是结束整个循环。 8. **Servlet多线程处理**:当多个客户端请求一个Servlet时,服务器通常会复用同一个...
14. 数据表中执行`listnext5`后,当前记录会跳过5条,变为第15条,但题目选项中没有15,所以是第14条。 15. `TRUE`不是Java的关键字,而是一个布尔常量。 16. 栈是一种后进先出(LIFO)的线性数据结构,用于临时...
Java面试题涵盖了许多核心概念和框架,以下是这些题目所涉及的知识点的详细解析: 1. **J2EE**:Java企业版(Java ...44. **try-catch-finally**:try中有return,finally仍会执行,但catch中的return会被跳过。
需要注意的是,如果程序没有更新,则下次访问会直接跳过前两个阶段进入执行阶段,这也是为什么首次访问的时间会较长的原因。 ##### JSP指令 JSP指令用于定义整个页面或页面部分的行为特征,主要有以下几种类型: 1...
continue跳过当前循环剩余部分,进入下一次循环;return语句结束当前方法并返回结果(如果有的话)。 7. 文件列表框属性:Pattern属性用于设置文件列表框显示的文件模式,比如只显示特定扩展名的文件。 8. Word...
在循环结构中,`continue` 语句的作用是跳过本次循环剩余的部分,直接进入下一次循环。它并不会结束整个循环的执行,因此题目中的描述 “循环体中 `continue` 语句的作用是结束整个循环的执行” 是错误的。 #### 6....
这个方法通常在服务器端使用,例如在Java的Servlet中。`response.sendRedirect()`函数用于重定向用户的浏览器到指定的URL。例如: ```java response.sendRedirect("目标页面.jsp"); ``` 这种方式不适用于...
`continue`则是跳过循环体中的剩余部分,直接进入下一次循环的条件判断阶段。 #### 3. 集合框架体系简介 Java集合框架由多个接口和实现类组成,主要包括Collection和Map两大分支。Collection接口下有List、Set等子...
- 如果你启用了`skip-grant-tables`,这将跳过权限检查,仅用于调试或初始化。在生产环境中,应关闭此选项并确保使用正确的用户权限。 4. **Docker部署**: - 如果你使用Docker部署Canal和MySQL,确保两个容器...