`

简要介绍Servlet (二)

 
阅读更多

今天接着简要介绍Servelt(写了一年半了,一直都忘了发了,剩下没写完的估计不会写了)

 

一、表单处理

 

        表单是服务器端的程序从Web页面获取信息时所采用的最常见的方式。表单数据可以跟在问号后附加到URL的结尾,GET请求即使用这种方式;表单数据还可以在单独的行中发送到服务器,POST请求即为如此。不管是用GET还是POST发送数据,Servlet中都使用相同的方法获取数据。

        单值读取:getParameter

        多值读取:getParameterValuse

        参数名的查找:getParameterNames、getParameterMap

        原始表单数据的读取:getReader、getInputStream

        多字符集输入的读取:setCharacterEncoding

 

二、HTTP请求报头

 

        HTTP请求报头由浏览器简介设定,并紧跟在初始的GET和POST请求行之后发送。如:

Accept    image/png,image/*;q=0.8,*/*;q=0.5
Accept-Encoding    gzip, deflate
Accept-Language    zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3
Connection    keep-alive
Cookie    BAIDUID=176652A910D84BEAB1AA0FC1DFD21998:FG=1; BDUT=98yh176652A910D84BEAB1AA0FC1DFD2199813d23a3e5b30; H_PS_PSSID=2195_1426_1944_1788
Host    t11.baidu.com
Referer    http://www.baidu.com/s?wd=13&rsv_bp=0&ch=&tn=baidu&bar=&rsv_spt=3&ie=utf-8&rsv_sug3=2&rsv_sug=0&rsv_sug1=1&rsv_sug4=1326&inputT=2070
User-Agent    Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0

 

        请求报头的读取:getHeader。尽管getHeader是读取输入报头的通用方式,但由于几种报头的应用太过普遍,故而ServletHttpRequest为它们提供了专门的访问方法:getCookies、getAuthType、getRemoteUser、getContentLength、getContentType、getDateHeader、getIntHeader、getHeaderNames、getHeaders、getMethod、getRequestURI、getQueryString、getProtocol

 

三、服务器响应的HTTP状态代码

 

        Web服务器的响应一般由状态行、一个或多个响应报头(其中一个必须为Content-Type)、一个空行和关联的文档组成。

设置任意状态码:setStatus,必须在PrintWriter实际返回任何内容前调用。

设置302状态码:sendRedirect,该方法生成302响应及Location报头,命令浏览器连接到新的位置。

设置404状态码:sendError,该方法发送404以及一小段简短的消息。

 

四、服务器响应的HTTP响应报头

 

Cache-Control    private
Connection    Keep-Alive
Content-Length    48
Content-Type    baiduApp/json; v6.27.2.14; charset=gbk
Date    Mon, 08 Apr 2013 03:35:07 GMT
Server    suggestion.baidu.zbb.df

 

        最通用的方式是使用ServletHttpResponse的setHeader方法。和设置状态代码一样,必须在返回实际的文档之前指定相关的报头。还有两个专门的方法,用来设置含有日期和整数的报头。

 

        setHeader(String headerName, String headerValue)

        setDateHeader(String headerName, long milliseconds)

        setIntHeader(String header, int headerValue)

        

         HTTP允许相同的报头名多次出现。setHeader、setDateHeader、setIntHeader替换任何同名的已有报头,而addHeader、addDateHeader、addIntHeader等方法添加一个报头。可以使用containsHeader检查是否设置了特定的报头。

       

         HttpServletResponse提供了许多方便的方法来指定常用的报头。

 

         setContentType(String mimeType)

         setContentLength(int length)

         addCookie(Cookie c)

         sendRedirect(String address) 

 

五、发送二进制数据

 

        servlet发送二进制数据,而非发送HTML文档所用的字符串时,一般使用getOutputStream方法获取原始的输出流,而非使用getWriter获取PrintWriter:

         response.setContentType("type/subtype");

         OutputStream out = response.getOutputStream();

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics