HttpServletRequest 和 HttpServletResponse对象

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值