今天接着简要介绍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();