文档章节

servlet中request方法解析

sunru
 sunru
发布于 2017/06/01 17:27
字数 703
阅读 7
收藏 0
点赞 1
评论 0
  • 一.getRemoteAddr()和getRemoteHost()

System.out.println(req.getRemoteAddr());
System.out.println(req.getRemoteHost()); 

http://localhost:8080/jw_0526_servlet/login.jsp路径访问,得到的结果是

0:0:0:0:0:0:0:1
0:0:0:0:0:0:0:1

  • 1.request.getRemoteAddr() 获取的值为0:0:0:0:0:0:0:1的原因及解决办法

最近在进行web开发时,在jsp页面获取服务器ip时,遇到了request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1,这是为什么呢,照道理讲,应该是127.0.0.1才对,为什么这个获取的值变成了ipv6了呢,而且我发现这种情况只有在服务器和客户端都在同一台电脑上才会出现(例如用localhost访问的时候才会出现),后来上网查了查原因,原来是/etc/hosts这个东西作怪(在windows上应该是C:\Windows\System32\drivers\etc\hosts这个文件),只需要注释掉文件中的 # ::1 localhost 这一行即可解决问题。另外localhost这个文件很有用,这里你可以添加自己的条目,例如添加 192.168.0.212 myweb 这样子,在浏览器中原来只能使用192.168.0.212来访问的,并可以使用myweb来进行替换。如果还不能解决,本机访问的时候用127.0.0.1或本机ip代替localhost即可解决

  • 2.getRemoteAddr()和getRemoteHost()的区别

 前一个是获得客户端的ip地址  
后一个是获得客户端的主机名  

那为什么得到的结果是一样的?

查看一下server.xml,connector中的enableLookups,如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址。
由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客
户返回响应结果.
 <Connector port="8080" maxThread="50" minSpareThreads="25" maxSpareThread="75" 
 enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" 
 connectionTimeout="20000" disableUploadTimeout="true" />
 <Connection port="8009" enableLookups="false" redirectPort="8443" debug="0" 
 protocol="AJP/1.3" />
第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定
义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求.
Connector元素共用属性
1>className指定实现Connector接口的类
2>enableLookups如果设为true,表示支持域名解析,可以把IP地址解析为主机名.WEB应用中调用
request.getRemoteHost方法返回客户机主机名.默认值为true
3>redirectPort指定转发端口.如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转
发至SSL的redirectPort端口。

  • 二.getRequestURI()和getRequestURL()

 System.out.println(req.getRequestURI());

输出结果为: /jw_0526_servlet/login.jsp

System.out.println(req.getRequestURL());

输出结果为:http://192.168.2.174:8080/jw_0526_servlet/login.jsp

 

© 著作权归作者所有

共有 人打赏支持
sunru
粉丝 4
博文 70
码字总数 21332
作品 0
南京
Java Web(一) Servlet详解!!

一、什么是servlet?     处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且...

architect刘源源 ⋅ 05/08 ⋅ 0

web.xml中Filter,Listener,Servlet的区别

一、Servlet Servlet是基本的服务端程序,他来自接口Servlet,接口中有方法service。而Servlet的一个重要实现类,则是tomcat服务器的核心,那就是HttpServlet HttpServlet有方法: public a...

architect刘源源 ⋅ 05/04 ⋅ 0

JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

Servlet的一些细节--学习笔记

Servlet细节 1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头 2)一个Servlet的url-pattern可以是1个或多个,有二种形式; a).xx b)/xx/ 注意:/不能一起直接使用 3)/和....

知止内明 ⋅ 04/17 ⋅ 0

JavaWeb22-HTML篇笔记

第22章WEB22-网上商城实战篇 今日任务 Ø 完成后台的功能模块 1.1 网上商城的后台功能的实现:1.1.1 后台的功能的需求: 1.1.1.1 分类管理: 【查询所有分类】 在左侧菜单页面中点击分类管理: 提...

我是小谷粒 ⋅ 06/08 ⋅ 0

JavaWeb开发比较重要的面试题

JavaWeb开发比较重要的面试题 1. 编码转换:怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 答:示例代码如下: String s1=”你好”; String s2=new String(s1.getBytes(“GB2312”...

xj_9264 ⋅ 05/06 ⋅ 0

tomcat学习笔记之servlet 容器

1、servlet 容器用来处理请求servlet资源、为客户端封装Response 对象的模块 2、tomcat 容器分四种: Engine:整个Catalina servlet 引擎 Host:包含一个或多个Context 容器的虚拟主机 Cont...

职业搬砖20年 ⋅ 06/08 ⋅ 0

Servlet创建运行的过程--生命周期以及自动加载

前言 初学者像我这样的,刚开始学的时候一脸懵逼,为什么Servlet可以直接运行,明明没有入口啊 只是重写了Servlet中的方法。然后访问该地址怎么就直接运行了。 所以了解Serlvet的运行过程即生...

codingcoge ⋅ 06/12 ⋅ 0

web.xml中在Servlet中获取context-param和init-param内的参数

web.xml里面可以定义两种参数: 1.application范围内的参数,存放在servletcontext中,在web.xml中配置如下: <context-param> <param-name>context/param</param-name> <param-value>avalib......

村长大神 ⋅ 2014/10/27 ⋅ 0

request的细节--学习笔记

)转发是通过RequestDispatcher对象的forward(request,response)方法完成的 )forward()方法之前的输出,如果是输出到缓冲区,再转发到其他Servlet,那么原缓冲区的数据忽略不计 )forward()方法...

知止内明 ⋅ 04/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部