前言

Request中方法众多,对于Java Web程序员来说,种种方法都会在工作中常常用到。Request由于不是JDK的一部分,这些方法的用法也没有专门的API可以查,所以在工作中遇到Request中方法的时候,所以常常感到困惑,因为觉得网上写的不清楚,自己又懒得写一个Web测试程序。这篇文章,一次性把Request中的各个方法的返回写在这里并做一个详细的总结,以备以后工作中用到可以随时查看。

示例

为了让后台可以取到queryString(这个专门在get和post的区别的文章中会讲解的),做一个表单,用post方式提交:

<body>
<form action="request?a=1&b=2&c=3" method="post">
<input type="submit" value=" 提交 " />
</form>
</body>

web.xml就不写了,大家应该都会配置,看下后台doPost方法的写法:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
System.out.println("request.getAuthType():" + request.getAuthType()); // 获取保护servlet的认证方案名(BASIC或SSL),未受保护的servlet返回的就是null
System.out.println("request.getCharacterEncoding():" + request.getCharacterEncoding()); // 获取字符编码
System.out.println("request.getContentLength():" + request.getContentLength()); // 返回请求体内容的长度
System.out.println("request.getContentType():" + request.getContentType()); // 获取内容类型
System.out.println("request.getContextPath():" + request.getContextPath()); // 获取上下文路径,就是"/"+工程名
System.out.println("request.getLocalAddr():" + request.getLocalAddr()); // 获取应用服务器的IP地址
System.out.println("request.getLocalName():" + request.getLocalName()); // 获取应用服务器的主机名
System.out.println("request.getLocalPort():" + request.getLocalPort()); // 获取应用服务器的端口号
System.out.println("request.getMethod():" + request.getMethod()); // 获取请求方式获取请求方式(GET与POST为主,也会有PUT、DELETE、INPUT)
System.out.println("request.getPathInfo():" + request.getPathInfo());
System.out.println("request.getPathTranslated():" + request.getPathTranslated());
System.out.println("request.getProtocol():" + request.getProtocol()); // 获取客户端向服务端传送数据使用的协议名称
System.out.println("request.getQueryString():" + request.getQueryString()); // 获取追加到Url后面的查询字符串
System.out.println("request.getRemoteAddr():" + request.getRemoteAddr()); // 获取发出请求的客户端的IP地址
System.out.println("request.getRemoteHost():" + request.getRemoteHost()); // 获取发出请求的客户端的主机名
System.out.println("request.getRemotePort():" + request.getRemotePort()); // 获取发出请求的客户端的端口号
System.out.println("request.getRemoteUser():" + request.getRemoteUser()); // 如果用户已经过认证,则返回发出请求的用户登录信息
System.out.println("request.getRequestedSessionId():" + request.getRequestedSessionId()); // 获取sessionId
System.out.println("request.getRequestURI():" + request.getRequestURI()); // 获取"/"+工程名+请求路径
System.out.println("request.getRequestURL():" + request.getRequestURL()); // 获取完整的请求地址,不带queryString
System.out.println("request.getScheme():" + request.getScheme()); // 获取当前链接使用的协议,一般应用就是http,SSL返回https
System.out.println("request.getServerName():" + request.getServerName()); // 获取URL请求的名字(以Ip请求就是Ip,以域名请求就是域名)
System.out.println("request.getServerPort():" + request.getServerPort()); // 获取URL请求的端口号
System.out.println("request.getServletPath():" + request.getServletPath()); // 获取请求路径
System.out.println("request.isSecure():" + request.isSecure()); // 获取此请求是否使用安全协议(比如https)
}

我从本地发起一个请求"http://localhost:8080/TestWeb/request?a=1&b=2&c=3",先看下用工具抓取的此次请求、响应的数据(火狐、360、谷歌都有,按F12即可):

再看一下后台的运行结果:

request.getAuthType():null
request.getCharacterEncoding():null
request.getContentLength():0
request.getContentType():application/x-www-form-urlencoded
request.getContextPath():/TestWeb
request.getLocalAddr():127.0.0.1
request.getLocalName():dell
request.getLocalPort():8080
request.getMethod():POST
request.getPathInfo():null
request.getPathTranslated():null
request.getProtocol():HTTP/1.1
request.getQueryString():a=1&b=2&c=3
request.getRemoteAddr():127.0.0.1
request.getRemoteHost():127.0.0.1
request.getRemotePort():3405
request.getRemoteUser():null
request.getRequestedSessionId():B198D2D352F2F23A1B3754246D68B803
request.getRequestURI():/TestWeb/request
request.getRequestURL():http://localhost:8080/TestWeb/request
request.getScheme():http
request.getServerName():localhost
request.getServerPort():8080
request.getServletPath():/request
request.isSecure():false

getParameter、getAttribute/setAttribute、getSession/setSession等类似方法,大家都比较熟悉,也比较不会搞错,就不列了,列的都是一些相对不常用的request方法。很多方法都已经能看出返回的是什么了,但是有些方法由于我这里是从本地发到本地的,所以看不到效果,不过注释上也给了详细的解释了,两个没写注释的方法查不到是什么意思,也试不出来怎么样才不是null,以后会记得关注,知道了就会更新。

Request中的各种方法的更多相关文章

  1. request中的那些方法到底是干什么的?

    最近做Java Web项目,在.jsp页面和servlet之间request和response还是有些混淆,查阅了一些资料,总结如下,方便以后使用: 首先,servlet接口是最基本的,提供的五个方法 ...

  2. nginx 自动忽略request中header name包含下划线参数的解决方法

    使用nginx过程中遇到了个问题,就是request中的header name中如果包含下划线会自动忽略掉,导致服务器接收不到该字段的内容,以下为解决方法: nginx默认request的header ...

  3. Java--获取request中所有参数的方法

    我们通常用到request获取某个参数的方法: String value=request.getparameter("key"); 如果想要获取request中所有的参数呢? re ...

  4. Spring中获取request的几种方法,及其线程安全性分析

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  5. laravel中请求用例$request可用的一些方法小结

    laravel中$request可用的一些方法小结 1,请求方法的获取 $method = $request->method(); 2,检测请求方法 $res = $request->is ...

  6. [No000016E]Spring 中获取 request 的几种方法,及其线程安全性分析

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  7. Spring中获取request的几种方法,及其线程安全性分析(山东数漫江湖)

    前言 本文将介绍在Spring MVC开发的web系统中,获取request对象的几种方法,并讨论其线程安全性. 原创不易,如果觉得文章对你有帮助,欢迎点赞.评论.文章有疏漏之处,欢迎批评指正. 欢迎 ...

  8. django.http.request中HttpRequest对象的一些属性与方法

    HttpRequest对象的属性 属性 描述 path 表示提交请求页面完整地址的字符串,不包括域名,如 "/music/bands/the_beatles/". method 表 ...

  9. request中getParameter和getAttribute的区别

    整理一下getParameter和getAttribute的区别和各自的使用范围. (1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方 ...

随机推荐

  1. C# ToString("x2")的理解

    1).转化为16进制. 2).大写X:ToString("X2")即转化为大写的16进制. 3).小写x:ToString("x2")即转化为小写的16进制. ...

  2. vuex2.0.0爬坑记录 -- mutations的第一个参数state不能解构

    今天在学习vuex的过程中,遇到了一个很困扰人的问题,最终利用vuex的状态快照工具logger解决了问题. 问题是这样的,我在子组件中使用了mapState()函数来将状态映射至子组件中,使子组件能 ...

  3. C# 特殊处理

    一.日期格式化处理 private Datetime _datetime;//定义字段 数据值都存在字段里 通过修改字段来修改属性 public string Datetime//定义属性 { get ...

  4. LoopbackJS 生成对应 Oracle 视图的model

    StrongLoop Arc 工具中的discover model 目前只能discover 表, Oracle数据库中的视图经测试并不能显示在列表中. 无奈之下,暂时只能采取替代方案. 解决方法: ...

  5. iOS原生地图开发指南续——大头针与自定义标注

    iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...

  6. ios xcode 下 报出 ”xx“is missing from working copy 的问题

    在项目中提交过svn后,再在本机上删除不用的图片资源后,build后会有   ”xx“is missing from working copy  的警告.在网上找了些资料后,总结下. 直接在终端下用s ...

  7. [转]linux shell数据重定向(输入重定向与输出重定向)详细分析

      在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件 ...

  8. Python中的random模块,来自于Capricorn的实验室

    Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...

  9. [UE4][Custom Animation Graph Node]Evaluate Pose by Curve

    目的:根据曲线值获得当前动作帧.用于实现各种通过曲线同步的功能. 方法:继承FAnimNode_Base创建自定义动画节点.重写Evaluate部分.创建相应的AnimGraphNode.可参考前一篇 ...

  10. 结对项目——高级四则运算检验器记录(168 & 187)

    首先,上图(*+﹏+*)~@ 1.如何看待结对编程 结对编程优点: 1.两个人能够相互支持,相互监督,客服编程过程中可能出现的烦躁的情况0_0. 2.在开发功能的同时,伴随了UnitTest的进行,可 ...