📄 处理httppostget请求.html
字号:
头部数据,也允许你获取客户端的数据。怎样获取这些数据取决于HTTP端请求方法。不管用任何HTTP方式,你都可以用
getParameterValues方法返回特定名称的参数值。对于用 HTTP GET
请求的方式,这个getQueryString方法将会返回一个可以用来分析的值。 </p>
<p> 客户端请求(request)包含了从客户端传递到Servlet的数据。所有的请求(request)都实现了ServletRequest接口。这个接口定义了一些方法访问下面的信息,如表14-1所示。 </p>
<p> 表14-1 ServletRequest接口方法</p>
<p> ?型 描 述 对 应 方 法</p>
<p> 参数,用来在客户端和Servlet之间传送信息 getAttribute(String name) </p>
<p> getAttributeNames() </p>
<p> getInputStream() </p>
<p> getParameter(String name) </p>
<p> getParameterMap() </p>
<p> getParameterNames() </p>
<p> getParameterValues(String name)</p>
<p> 对象值属性,用来在Servlet容器和Servlet</p>
<p> 之间,或者协作的Servlet之间传递信息 removeAttribute(String name)</p>
<p> setAttribute(String name, Object o)</p>
<p> 有关请求使用的协议信息,</p>
<p> 客户端和服务器在请求中的调用 getContentLength() </p>
<p> getContentType() </p>
<p> getProtocol() </p>
<p> getReader() </p>
<p> getRealPath(String path) </p>
<p> getRemoteAddr() </p>
<p> getRemoteHost() </p>
<p> getRequestDispatcher(String path) </p>
<p> 有关请求使用的协议信息,</p>
<p> 客户端和服务器在请求中的调用 getScheme() </p>
<p> getServerName()</p>
<p> getServerPort() </p>
<p> isSecure()</p>
<p> 有关localization的信息 getCharacterEncoding() </p>
<p> getLocale() </p>
<p> getLocales() </p>
<p> setCharacterEncoding(String env)</p>
<p> 下面的代码段示范了如何使用request中的方法获得客户端信息。 </p>
<p> Enumeration params = request.getParameterNames();</p>
<p> String paramName = null;</p>
<p> String[] paramValues = null;</p>
<p> </p>
<p> while (params.hasMoreElements()) {</p>
<p> paramName = (String) params.nextElement();</p>
<p> paramValues = request.getParameterValues(paramName);</p>
<p> System.out.println(" Parameter name is " + paramName);</p>
<p> for (int i = 0; i <paramvalues.length; p="" {="">< i++)>
</paramvalues.length;></p><p> System.out.println(", value " + i + " is " + paramValues[i].toString());</p>
<p> }</p>
<p> </p>
<p> HTTP Servlets使用HTTP request对象(HttpServletRequest),它包含了request URL、HTTP头信息、查询字符串,等等。HTTP request URL 包括几个部分:</p>
<p> http://:? </p>
<p> 一般情况下: </p>
<p> requestURI = contextPath + servletPath + pathInfo</p>
<p> Context path:通过getContextPath方法获得。 </p>
<p> Servlet Path:通过getServletPath方法获得。 </p>
<p> PathInfo:通过getPathInfo方法获得。</p>
<p> 如表14-2所示。 </p>
<p> 表14-2 路径的对应</p>
<p> Request Path Path Elements</p>
<p> /catalog/help/feedback.jsp ContextPath: /catalog ServletPath: </p>
<p> /help/feedback.jsp PathInfo: null</p>
<p> 提供HTTP响应 </p>
<p> 响应(response)包含了在服务器和客户端之间传递的数据。所有的响应(response)都实现了ServletResponse接口。这个接口定义了一些方法提供给开发人员使用,如表14-3所示。 </p>
<p> 表14-3 ServletResponse接口方法</p>
<p> ?型 描 述 对 应 方 法</p>
<p> 获得向客户端发送数据的输出流 发送字符流:getWriter() </p>
<p> 发送字节流:getOutputStream()</p>
<p> 指示响应返回的内容类型(例如:text/html)</p>
<p> 已经注册的内容类型名称保存在IANA</p>
<p> (Internet Assigned Numbers Authority) setContentType(java.lang.String type)</p>
<p> 指出是否是缓冲输出。默认情况下写入输出的</p>
<p> 内容被立即发送到客户端。使用缓冲后写入输出的内容先</p>
<p> 不发送到客户端,这样Servlet有更多的时间设置相应的</p>
<p> 状态码和头信息,或者转移到其他的Web资源 flushBuffer() </p>
<p> getBufferSize() </p>
<p> isCommitted() </p>
<p> reset() </p>
<p> resetBuffer() </p>
<p> setBufferSize(int size) </p>
<p> setContentLength(int len)</p>
<p> 设置localization信息 getCharacterEncoding() </p>
<p> getLocale()</p>
<p> setLocale(java.util.Locale loc)</p>
<p> HTTP response类(HttpServletResponse)有一些代表HTTP头信息的域:</p>
<p> </p>
<p> 状态码用来指出响应(response)失败的原因。 </p>
<p> Cookies在客户端存储应用相关的信息,有时cookies用来维护和标识用户的session。 </p>
<p> Servlet首先设置响应(response)头信息,包括响应(response)的内容类别和缓冲区大小,然后在doGet方法中从响应
(response)获得PrintWriter
,最后向输出中写入HTML代码,调用close()方法提交这次对客户端的响应(response)。示范代码如下: </p>
<p> public void doGet (HttpServletRequest request,</p>
<p> HttpServletResponse response)</p>
<p> throws ServletException, IOException </p>
<p> </p>
<p> // 设置头信息</p>
<p> response.setContentType("text/html");</p>
<p> response.setBufferSize(8192);</p>
<p> PrintWriter out = response.getWriter();</p>
<p> </p>
<p> // 向response中输出</p>
<p> out.println("" +</p>
<p> "");</p>
<p> ... </p>
<p> out.println("");</p>
<p> // 关闭输出流</p>
<p> out.close();</p>
<p>}</p><div class="pages"></div></div><div class="fix"></div></div>
<div class="zd_row">
<h2 class="tody_tt">推荐阅读与 <a href="http://soft.zdnet.com.cn/software_zone/list-0-0-73638-1-1.htm" target="_blank">hugetlbfs</a> <a href="http://soft.zdnet.com.cn/software_zone/list-0-0-49933-1-1.htm" target="_blank">PostgreSQL</a> <a href="http://soft.zdnet.com.cn/software_zone/list-0-0-54354-1-1.htm" target="_blank">Postini</a> <a href="http://soft.zdnet.com.cn/software_zone/list-0-0-58571-1-1.htm" target="_blank">HTTP</a> 相关软件内容</h2>
<div class="observ_box"><div class="observ"><div class="observ_sub"><h3 class="obs_tt">相关软件资讯</h3></div><ul class="h_line arti_f"><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0710/417577.shtml" target="_blank">Google6.25亿美元收购Postini</a></li></ul></div></div>
<div class="observ_box no_bor"><div class="observ_box no_bor"><div class="observ_sub"><h3 class="obs_tt">相关软件技术文章</h3></div><ul class="h_line arti_f"><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0818/459890.shtml" target="_blank">让远程服务更简单 SSL VPN全面解析</a></li><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0816/458549.shtml" target="_blank">IIS使用十大原则</a></li><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0816/458531.shtml" target="_blank">IIS 6架设网站常见问题及症状答疑</a></li><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0816/458518.shtml" target="_blank">IIS FAQ常见问题解答</a></li><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0816/458509.shtml" target="_blank">IIS 错误代码大汇总</a></li><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0814/455710.shtml" target="_blank">IIS6.0服务器架站无法访问解决方案总结</a></li><li><a href="http://soft.zdnet.com.cn/software_zone/2007/0807/446590.shtml" target="_blank">网页HTML代码中Meta标签详解</a></li></ul></div></div>
<div class="fix"></div>
</div><!--/zd_row-->
<!--评论回复-->
<div id="pinglun_tag" class="text00001">评论回复</div>
<div id="textul">
<ul>
</ul>
</div>
<!--评论回复-->
<div class="zd_row bu_bg">
<script src="%B4%A6%C0%EDHTTPPOSTGET%C7%EB%C7%F3_files/validate.js"></script>
<h1 class="theme">
<span>我要对本文
发布评论</span></h1>
<form action="/i/software_zone/div/story_comment_submit.php" method="post" name="form1" onsubmit="return Validate(this,'')"> <textarea cols="80" rows="5" class="specialtext1" name="comment" validator="NotEmptyToo" errmsg="请输入正文"></textarea>
<div class="yz_code">验证码:(必填)<input name="validateCode" class="specialtext1" size="16" validator="NotEmptyToo" errmsg="请输入验证码" type="text"> <img src="%B4%A6%C0%EDHTTPPOSTGET%C7%EB%C7%F3_files/validateCode.png"><input name="" value="发表评论" type="submit"> <a href="http://bbs.zdnet.com.cn/index.php?gid=43" target="_blank">到软件社区去看看</a></div>
<input name="document_id" value="498635" type="hidden">
<input name="cflag" value="1" type="hidden">
</form>
<div class="fix"></div>
</div>
<div class="zd_row bu_bg">
<h1 class="theme"><span>软件频道热门栏目推荐</span></h1>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -