【叶凡网络】Http Servlet Request方法的调用

2014-01-11 10:28:16 | 新闻来源:叶凡网络 | 点击量:1193

1.实例:读取三个表单变量

读取三个表单变量param1param2和param3并以HTML列表的形式列出它值。请注意,下面是一个简单的例子。虽然在发送应答内容之前必需指定应答类型(包括内容类型、状态以及其他HTTP头信息)但Servlet对何时读取请求内容却没有什么要求。

通过规范输入读取POST数据,如果你习惯用传统的CGI方法。那么在Servlet中也有类似的方法,即在HttpServletRequest上调用getRead或者getInputStream但这种方法对普通的表单变量来说太麻烦。然而,如果是要上载文件,或者POST数据是通过专门的客户顺序而不是HTML表单发送,那么就要用到这种方法。

也可以很容易地把Servlet做成既能处理GET请求,另外。也能够处理POST请求,这只需要在doPost方法中调用doGet方法,或者覆盖servic方法(servic方法调用 doGetdoPostdoHead等方法)实际编程中这是一种标准的方法,因为它只需要很少的额外工作,却能够增加客户端编码的灵活性。

packaghall; 

importjava.io.*; 

importjavax.servlet.*; 

importjavax.servlet.http.*; 

importjava.util.*; 

publicclassThreeParamextendHttpServlet{ 

 publicvoiddoGetHttpServletRequestrequest.

HttpServletResponsrespons 

IOException{ throwServletException.

response.setContentTyp"text/html"; 

PrintWritout=response.getWrit; 

Stringtitl="读取三个请求参数"; 

out.printlnServletUtilities.headWithTitltitl 

 publicvoiddoPostHttpServletRequestrequest.

HttpServletResponsrespons 

IOException{ throwServletException.

respons; doGetrequest.

表单数据概述

如果你曾经使用过Web搜索引擎或许会留意到一些古怪的URL比方“http://host/path?user=Marty+Hall&origin=bwi&dest=lax这个URL中位于问号后面的局部,即 user=Marty+Hall&origin=bwi&dest=lax就是表单数据,这是将Web页面数据发送给服务器顺序的最常用方法。对于GET请求,表单数据附加到URL问号后面(如上例所示)对于POST请求,表单数据用一个单独的行发送给服务器。

然而从这种形式的数据提取出所需要的表单变量是CGI编程中最麻烦的事情之一。首先,GET请求和POST请求的数据提取方法不同:对于GET请求,通常要通过QUERY_SPING环境变量提取数据;对于POST请求,则一般通过规范输入提取数据。第二,顺序员必须负责在&符号处截断变量名字-变量值对,再分离出变量名字(等号左边)和变量值(等号右边)第三,必需对变量值进行URL反编码操作。因为发送数据的时候,字母和数字以原来的形式发送,但空格被转换成加号,其他字符被转换成“%XX形式,其中XX十六进制表示的字符ASCII或者ISOLatin-1编码值。例如,如果HTML表单中名为“user域值为“~hall,以前。~gates,and~mcneali则实际向服务器发送的数据为“users=%7Ehall%2C+%7Egates%2C+and+%7Emcneali最后,即第四个导致解析表单数据非常困难的原因在于,变量值既可能被省略(如“param1=val1?m2=?m3=val3也有可能一个变量拥有一个以上的值,即同一个变量可能出现一次以上(如“param1=val1?m2=val2?m1=val3

而且GET请求和POST请求的处置方法完全相同。JavaServlet好处之一就在于所有上述解析操作都能够自动完成。只需要简单地调用一下HttpServletRequestgetParamet方法、调用参数中提供表单变量的名字(大小写敏感)即可。

参数中指定的变量名字第一次出现所对应的值经反编码得到得字符串(可以直接使用)如果指定的表单变量存在但没有值,getParamet方法的返回值是一个字符串。getParamet返回空字符串;如果指定的表单变量不存在则返回null如果表单变量可能对应多个值,可以用 getParametervalu来取代getParametgetParametervalu能够返回一个字符串数组。

虽然在实际应用中Servlet很可能只会用到那些已知名字的表单变量,最后。但在调试环境中,获得完整的表单变量名字列表往往是很有用的利用getParamerterNam方法可以方便地实现这一点。getParamerterNam返回的一个Enumer其中的每一项都可以转换为在HttpServletRequest调用getParamet字符串。

上一篇:【叶凡网络】印度要求调离美国一名驻印使馆外交官 下一篇:【叶凡网络】2014年春节放假通知