- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章HttpServletRequest对象简介_动力节点Java学院整理由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
通过getmethod方法获得的是客户端访问该web应用的http请求方式.
代码和结果如下:
1
2
|
string requestmethod = request.getmethod();
system.out.println(requestmethod);
|
想获取客户端发来的http请求头中的内容可以使用如下方法:
getdateheader() 。
getheader(string) 。
getheadernames() 。
getheaders(string) 。
getintheader(string),
这些方法在各个特定的情况下能有不同的用途,体现出获取客户端请求头方式的多样性.
如通过getheader(string)可以获取指定请求头的数据内容:
1
2
|
string connectionstate = request.getheader(
"connection"
);
system.out.println(connectionstate);
|
而通过getheadernames()可以获取发送的所有请求头,例:
1
2
3
4
5
6
|
enumeration e = request.getheadernames();
while
(e.hasmoreelements()) {
string headername = (string) e.nextelement();
string headervalue = request.getheader(headername);
system.out.println(headername+
":"
+headervalue);
}
|
而通过getheaders(string)方法获取的是某个同名头的内容,适用于当某个请求头有多个内容时使用.
介绍完获取请求行和请求头,下面介绍获取请求数据中内容的方法:
getpatameter(string) 。
getparameternames() 。
getparametervalues(string) 。
getparametermap() 。
和getinputstream() 。
使用getpatameter(string)方式可以获取请求数据中指定的数据值 。
代码如下:
1
2
|
string value = request.getparameter(
"username"
);
system.out.println(value);
|
。
常可以在浏览器地址url后直接写入参数数据来模拟get方式:
最终在控制台得到:
通过getparameternames()可以获取多个参数:
1
2
3
4
5
6
|
enumeration e = request.getparameternames();
while
(e.hasmoreelements()) {
string paramname = (string)e.nextelement();
string paramvalue = request.getparameter(paramname);
system.out.println(paramname+
":"
+paramvalue);
}
|
使用getparametervalues(string)有助于获取当请求数据参数名有相同时的情况:
比如下面这种情况:
代码:
1
2
3
4
|
string[] values = request.getparametervalues(
"username"
);
for
(
int
i=
0
;i<values.length;i++) {
system.out.println(values[i]);
}
|
在控制台观察:
(注意:像getpatameter(string)、getparametervalues(string)等等这样的方法,都要小心空指针异常,可能的原因在于并没有这样的参数,还有一种就是在url后没有任何参数传入,所以要特别注意,应该加入健壮性判断。这也是编程过程中会碰到传入参数都应该注意的问题。) 。
使用getparametermap()可以获取以请求数据中参数和参数值作为的键值对的map集合。这样我们就能同时获取键值对。假设有如下情况:
代码为:
1
2
3
4
5
6
7
8
|
map<string,string[]> map = request.getparametermap();
for
(map.entry<string, string[]> entry :map.entryset()) {
string paramname = entry.getkey();
for
(
int
i=
0
;i<entry.getvalue().length;i++){
string paramvalue = entry.getvalue()[i];
system.out.println(paramname+
":"
+paramvalue);
}
}
|
如果请求数据参数为:
那么在控制台上看到的则是:
以上说明了常用的获取数据的方式,还有一种属于request响应对象的getinutstream方法,而这个方法一般只用于大容量的数据获取,比如文件上传,将在之后的篇章中介绍.
下面介绍其他常用方法 。
通过getrequesturi方法和getrequesturl可以获取http请求服务器资源的uri和url,关于uri和url的区别可以通过获取后的字符串来查看:
代码:
1
2
3
4
5
|
string fileuri = request.getrequesturi();
system.out.println(
"uri: "
+fileuri);
stringbuffer fileurl = request.getrequesturl();
system.out.println(
"url: "
+fileurl.tostring());
|
访问该servlet,得到:
可以看出uri只包括在服务器中的web应用名和资源对外访问路径(虚拟目录).
通过getquerystring()方法可以获取url上由get方式带来的参数:
若代码为:
1
|
system.out.println(request.getquerystring());
|
而我在访问这个servlet的url上添加:“?username=fjdingsd&password=123”:
那么当访问这个servlet之后,在myeclipse的控制台将看到:
通过getremoteaddr方法可以获取访问该web应用的客户端ip地址.
代码:
1
|
system.out.println(request.getremoteaddr());
|
而通过getremotehost方法获取的是访问该web应用的客户端主机名,如果没有在dns服务器上注册的则是获取ip地址。这里说的主机名是指在dns上注册的,比如www.baidu.com,那么通过该方法如果从该主机上来访问,则获取到的是:baidu.com.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
最后此篇关于HttpServletRequest对象简介_动力节点Java学院整理的文章就讲到这里了,如果你想了解更多关于HttpServletRequest对象简介_动力节点Java学院整理的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
过去几天我一直试图解决这个问题,但我做不到。我正在尝试生成 _ _ _ 形式的随机数。 _ _ _ _ 小数点前 3 位,然后是 4 位小数。 非常感谢任何帮助。谢谢, 院长 最佳答案 您发布的代码有
我的方法有问题。我需要从主类调用的方法的输出打印我: 需要这个输出:_ _ _ _ _ 我知道我可以将 System 的静态方法放入循环中,但这不是我想要的解决方案。我需要它来打印主类中方法的输出。
我正在学习 Scala,有一个非常基本的问题。考虑以下两个使用占位符语法的表达式 - // Syntax A val fnA = (_: Int, _: Int) => _ / _ // Synta
我正在使用图书馆 URLEmbeddedView 它在其库中定义了以下代码: func addConstraints(with view: UIView, center: CGPoint, multi
我一直在许多受人尊敬的文档中看到这个相当令人尴尬的事情:_|_ 或 (_|_) 找不到它的定义(Google 不能很好地处理符号)。那到底是什么呢? 最佳答案 来自 here :- Bottom Th
,_,( ){ ,_,| ,_,&};,_, 不知道是什么意思... 看起来像一个 bash 命令,但它可能是 s bash shell 指令或其他东西如果有人可以帮助理解这一点,我们将不胜感激。当我
所以我正在尝试构建一个函数,它接受一个元组列表并找到具有最大第二个元素的元组。但是我遇到了模式匹配错误。 这是我的代码。 resultTuple :: [((Int,Int),Int)] ->
我在 try Flow 编辑器中重现了我的情况,可以访问 here . 以下是链接发生问题时的代码: /* @flow */ type PayloadType = 1 | 2 | 3; type Tr
我在plfa读到这样一段代码。 import Relation.Binary.PropositionalEquality as Eq open Eq using (_≡_; refl; cong; s
这个问题在这里已经有了答案: Swift 3.0: compiler error when calling global func min(T,T) in Array or Dictionary e
是否有理由使用一个而不是另一个?似乎 _.some 和 _.map 更易于使用或适用于更多情况(根据我非常有限的经验),但从阅读它来看,它们听起来好像应该做同样的事情。我敢肯定还有其他这样的例子,我很
在 Xcode 7 Beta 中开始使用 Swift 2 后,出现错误 cannot invoke。是什么导致了这个问题? 我试图通过以下两个问题找出我的问题,但我仍然收到错误:Question 1
所以我玩了一会儿,试图写一些关于存在和变化的东西,我遇到了这段有趣的代码。 final case class Box[+T](val value: T) { def >>=[U](f: T =>
Here is the screenshot for the error. 遵循本教程 https://developers.google.com/places/ios-api/start 在本教程中
我正在为许多标准的 Underscore.js 函数重写底层代码,以提高我的 JavaScript 技能,但我有点受困于 _.every/ _.全部。似乎在库本身中,_.every/_.all 函数仅
我在 shell 脚本中多次看到他们在 if 比较中使用 "_",如下所示: if [ "_$str" = "_" ]; then ....; fi 上面的代码通过比较 if [ "_$str"= "
我正在尝试快速过滤字典: var data: [String: String] = [:] data = data.filter { $0.1 == "Test" } 上面的过滤器代码在 Swift
我在 Entity Framework 核心映射方面遇到了问题。我收到此异常“不支持从‘付款’到‘购买。付款’的关系,因为拥有的实体类型‘购买’不能位于非所有权关系的主要方面。”在调试此功能的测试时。
我正在尝试模拟groovy.sql.Sql调用(查询,params [],闭包)类。 下面是我正在尝试在DatabaseService类文件中的方法。 public void getUsers(Lis
在阅读 dart 代码时,我经常看到一些仅使用下划线 _ 参数调用的函数。这让我困扰了一段时间,由于 flutter 改进了它的分析消息,我有了一些线索......但我觉得我并没有真正理解这个概念:-
我是一名优秀的程序员,十分优秀!