HTTP Servlets 使用 HTTP request 对象( HttpServletRequest ),它包含了 request URL 、 HTTP 头信息、查询字符串,等等。 HTTP request URL 包括几个部分:
http://:?
一般情况下:
requestURI = contextPath + servletPath + pathInfo
Context path :通过 getContextPath 方法获得。
Servlet Path :通过 getServletPath 方法获得。
PathInfo :通过 getPathInfo 方法获得。
关于路径的对应
Request Path
Path Elements: /catalog/help/feedback.jsp
ContextPath: /catalog
ServletPath: /help/feedback.jsp
PathInfo: null
提供 HTTP 响应
响应( response )包含了在服务器和客户端之间传递的数据。所有的响应( response )都实现了 ServletResponse 接口。这个接口定义了一些方法提供给开发人员使用,如表 14-3 所示。
表 14-3 ServletResponse 接口方法
l 类型描述 : 获得向客户端发送数据的输出流
对应方法 :
getWriter(),
getOutputStream()
l 类型描述 : 指示响应返回的内容类型(例如: text/html )已经注册的内容类型名称保存在 IANA ( Internet Assigned Numbers Authority )
对应方法 :
setContentType(java.lang.String type)
l 类型描述 : 指出是否是缓冲输出。默认情况下写入输出的内容被立即发送到客户端。使用缓冲后写入输出的内容先不发送到客户端,这样 Servlet 有更多的时间设置相应的状态码和头信息,或者转移到其他的 Web 资源
对应方法 :
flushBuffer()
getBufferSize()
isCommitted()
reset()
resetBuffer()
setBufferSize(int size)
setContentLength(int len)
l 类型描述 : 设置 localization 信息
对应方法 :
getCharacterEncoding()
getLocale()
setLocale(java.util.Locale loc)
HTTP response 类( HttpServletResponse )有一些代表 HTTP 头信息的域:
状态码用来指出响应( response )失败的原因。
Cookies 在客户端存储应用相关的信息,有时 cookies 用来维护和标识用户的 session 。
Servlet 的设置顺序
1. 首先设置响应( response )头信息,包括响应( response )的内容类别和缓冲区大小,
2. 然后在 doGet 方法中从响应( response )获得 PrintWriter ,
3. 最后向输出中写入 HTML 代码,
4. 调用 close() 方法提交这次对客户端的响应( response )。
示范代码如下:
public void doGet (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
// 设置头信息
response.setContentType("text/html");
response.setBufferSize(8192);
PrintWriter out = response.getWriter();
// 向 response 中输出
out.println("<html>" + "<head><title>+messages.getString("TitleBookDescription")+</title></head>");
// ...
out.println("</body></html>");
// 关闭输出流
out.close();
}