W9-请求响应[JavaWeb]

1.请求响应的流程

  1.1 服务器每次接收到请求时,都会为这个请求开辟一个新的线程;

  1.2 服务器会把客户端的请求数据封装到request对象中,request是请求数据的载体;

  1.3 服务器还会创建reponse对象,每个对象与客户端连续在一起,可以用来向客户端发送响应;

2.Response

  2.1 在HttpServletResponse接口中

  (1)状态码:200表示成功,302表示重定向,404表示客户端错,500表示服务器端错;

    sendError(int sc)  发送错误状态码,例如404,500;

    sendError(int sc,String mag)  发送错误状态码,可以携带一个错误信息;

    sendError(int sc)  发送成功的状态码,可以用来发送302;

  (2)响应头:Content-Type,Refresh,Location等

    setHeader(java.lang.String name, java.lang.String value)  适用于单值的响应头

    addHeader(java.lang.String name, java.lang.String value)  适用于多值的响应头

    setIntHeader(java.lang.String name, int value) 适用于单值的int类型的响应头

    addIntHeader(java.lang.String name, int value)  适用于多值的int类型的响应头

    setDateHeader(java.lang.String name, long date)  适用于单值的毫秒类型的响应头

    addDateHeader(java.lang.String name, long date)  适用于多值的毫秒类型的响应头

  (3)响应体:通常是html,也可以是图片;

    response的两个流:

    -ServletOutputStream:用来向客户端发送字节数据;ServletOutputStream out=response.getOutputStream() 

    -PrintWriter:用来向客户端发送字符数据,需要设置编码;PrintWriter writer=response.getWriter() 

    -使用PrintWriter发送字符数据;(字符与字节的区别

    -使用ServletOutputStream发送字节数据(图片);

    -两个流不能同时使用;

  (4)重定向

   sendRedirect(java.lang.String location) 

3. Request:封装了客户端所有的请求数据;

  3.1 在HttpServletRequest接口中和ServletRequest接口中

  (1)获取请求方式:getMethod() ,可能是POST或者是GET;

  (2)获取HTTP请求头:

    String getHeader(java.lang.String name):适用于单值头;

    int getIntHeader(java.lang.String name) :适用于单值int类型的请求头;

    long  getDateHeader(java.lang.String name) :适用于单值毫秒类型的请求头;

       Enumeration  getHeaders(java.lang.String name) :适用于多值请求头;

  (2)获取请求URL

  示例:http://localhost:8080/Day10-2/AServlet?username=xxx&password=yyy

    String getScheme() :获取协议 http

    String getServerName():获取服务器名 localhost

    int getServerPort() :获取服务器端口号 8080

    String getContextPath() :获取项目名 /Day10-2

    String getServletPath():获取Servlet路径 /AServlet

    String  getQueryString() :获取参数部分,即问号后面的部分 username=xxx&password=yyy

    String getRequestURI() :获取请求URI,项目名+Servlet路径  0/Day10-2/AServlet

    String getRequestURL() :获取请求URL,等于不包含参数的整个请求路径 http://localhost:8080/Day10-2/AServlet

  (3)获取请求参数:请求参数是由客户端发送给服务器的,有可能是请求体中(POST),也有可能是URL之后(GET)

     请求参数:有一个参数一个值的,还有一个参数多个值的;

    String getParameter(java.lang.String name):获取指定名称的请求参数值,适用于单值请求参数

    String[] getParameterValues(java.lang.String name) :获取指定名称的请求参数值,适用于多值请求参数

    Enumeration<String>  getParameterNames() :获取所有请求参数名称;

    Map<String ,String[]> getParameterMap():获取所有请求参数,其中key为参数名,value为参数值;

  (4)请求转发和请求包含:

猜你喜欢

转载自www.cnblogs.com/ERFishing/p/11376716.html