HttpServletRequest 和 HttpServletResponse对象
HttpServletRequest对象
HttpServletRequest对象代表客户端的请求对象,当客户端通过HTTP协议访问服
务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的方
法,可以获得客户端请求的所有信息。
HttpServletRequest继承ServletRequest接口,所以应该要先分析ServletRequest接口定义方法。
ServletRequest接口
public interface ServletRequest {
//Request对象设置属性值方法相关
//保存一个属性值到request对象中,通常都使用于请求转发中
public void setAttribute(String name, Object o);//重点掌握
public Object getAttribute(String name);
public void removeAttribute(String name);
public Enumeration<String> getAttributeNames();
//Request对象获得请求参数方法相关
public String getParameter(String name);//重点掌握
public Enumeration<String> getParameterNames();
public String[] getParameterValues(String name);//注意返回的是数组类型,由于要支持复选框这种表单类型,所以应该是String数组类型
public Map<String, String[]> getParameterMap();//同上,不过这个是返回所有请求参数和值
//Request Body相关操作方法
//获得请求体(request body)的子节输入流(其实servlet对其有包装的流)
public ServletInputStream getInputStream() throws IOException; //重点掌握
//获得请求体(request body)的缓冲输入流
public BufferedReader getReader() throws IOException;//重点掌握
//备注:由于流读一次之后就会被清空,所以getInputStream和getReader不能同时使用
//获得请求体(request body)的子节数组长度
public int getContentLength();
//获得请求体(request body)的MIME类型
public String getContentType();
//获得请求体(request body)的编码类型
public String getCharacterEncoding();
//设置请求体(request body)的编码类型
public void setCharacterEncoding(String env) throws UnsupportedEncodingException;
//请求转发的关键方法
public RequestDispatcher getRequestDispatcher(String path);//重点掌握
//Servlet3.0之后的请求异步处理方法
public AsyncContext startAsync() throws IllegalStateException;//重点掌握
public AsyncContext startAsync(ServletRequest servletRequest,
ServletResponse servletResponse)
throws IllegalStateException;
public AsyncContext getAsyncContext();
//获得web应用上下文对象
public ServletContext getServletContext();//重点掌握
. . .还有一些获得请求服务器地址端口服务名等方法不一一列举
}
HttpServletRequest接口
/**
*Extends the javax.servlet.ServletRequest interface
*to provide request information for HTTP servlets.
*The servlet container creates an HttpServletRequest
*object and passes it as an argument to the servlet's service
*methods
*/
public interface HttpServletRequest extends ServletRequest {
//获得客户端Cookie对象数组
public Cookie[] getCookies();//重点掌握
//获取Request的会话对象
public HttpSession getSession();//重点掌握
//获得客户端请求方法
public String getMethod();
//获取web项目的根路径
public String getContextPath();//重点掌握
//Returns the query string that is contained in the request URL after the path.
public String getQueryString();
//Returns the session ID specified by the client.
public String getRequestedSessionId();
//Checks whether the requested session ID is still valid.
public boolean isRequestedSessionIdValid();
//
public StringBuffer getRequestURL();
public String getServletPath();
//获得请求头信息相关方法
public String getHeader(String name);
public Enumeration<String> getHeaders(String name);
public Enumeration<String> getHeaderNames();
//Servlet3.0之后支持的文件上传功能方法
public Collection<Part> getParts() throws IOException, ServletException;//重点掌握
public Part getPart(String name) throws IOException, ServletException;//重点掌握
}
HttpServletResponse对象
每一次客户端请求服务器端,服务器端会为每次请求生成对应的响应对象。HttpServletResponse对象中包含响应的数据。
ServletResponse接口
public interface ServletResponse {
//获得response对象的输出流
public ServletOutputStream getOutputStream() throws IOException;//重点掌握
//获得response对象的输出流
public PrintWriter getWriter() throws IOException;//重点掌握
//备注:getOutputStream和getWriter两个方法不能同时使用,否则会报错。
//设置响应内容的ContentType
public void setContentType(String type);//重点掌握
//设置响应内容的编码格式
public void setCharacterEncoding(String charset);
}
HttpServletResponse接口
public interface HttpServletResponse extends ServletResponse {
//向客户端增加Cookie对象
public void addCookie(Cookie cookie);//重点掌握
//重定向地址
public void sendRedirect(String location) throws IOException;//重点掌握
...还有一些设置header信息的方法没有一一举例
定义了很多状态码(1xx、2xx、3xx、4xx、5xx)可以进入看看
}
总结
Request对象就是对请求信息的封装,Response对象就是对响应信息的封装。你
想从客户端获得的一些信息都来自于Request对象,你想让客户端获得的一切信息都源于Response对象。
参考
http://www.cnblogs.com/xdp-gacl/p/3789624.html
http://www.cnblogs.com/xdp-gacl/p/3798347.html
https://en.wikipedia.org/wiki/Request%E2%80%93response