我的JavaWeb学习2

感谢传智播客的视频教程和讲义

response: HttpservletResponse
   ServletResponse-->与http协议无关类型
   HttpSerlvetResponse -->与http协议有关类型
   > sendError(int sc) -->发送错误状态码 eg:404,500
   > sendError(int sc ,String msg) -->也可以发送状态码,还可以带一个错误信息
   > setStratus(int sc ) 发送成功的状态码,也可以用来发送302
  
   响应头:content-Type,Refresh,Location
       头就是一个键值 对,可能会存一个头一个值 ,也有可能一个头多个值
     > *****setHeader(String name, String value):适用于单值的响应头,例如:response.setHeader("aaa", "AAA");
  > addHeader(String name, String value):适用于多值的响应头
  response.addHeader("aaa", "A");
  response.addHeader("aaa", "AA");
  response.addHeader("aaa", "AAA");
  > setIntHeader(String name, int value):适用于单值的int类型的响应头
 ` response.setIntHeader("Content-Length", 888);
    > addIntHeader(String name, int value):适用于多值的int类型的响应头
    > setDateHeader(String name, long value):适用于单值的毫秒类型的响应头
  response.setDateHeader("expires", 1000 * 60 * 60 * 24);
    > addDateHeader(String name, long value):适用于多值的毫秒类型的响应头

> 发送302,设置Location头,完成重定向! 重定向时,必须要烈写Location
>定时刷新,设置refresh头,也可以理解成定时重定向
>禁用浏览器缓存:
response.setHeader("Cache-Control", "no-cache");
  response.setHeader("pragma", "no-cache");
  response.setHeader("expires", "-1");
> <meta> 标签可以代替响应头:
     <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
响应体:通常是html,也可以是图片
    response的两个流:(!!这两个流不能同时 使用)
       >ServletOutputStream 用来向客户端发送字节数据 
          >得到方法:ServletOutputStream out = response.getOutputStream();
       >PrintWriter ,用来向客户端发送字符数据,需要设置编码
          >得到方法:PrintWriter pWriter  = response.getWriter();

重定向: 设置302,设置location 其中变化的只有location,所以java提供了一个快捷的重定向
> setRedirect(String location) 方法

我的JavaWeb学习2_第1张图片

requst -->封装了客户端所有的请求体
请求行
请求头
空行
请求体<get>
   获取常用信息:
    > 获取客户端IP,案例 封IP  request.getRemoteAddr()
    > 请求方式 get post
    >请求头
      >String getHeader(String name) //给一个头名,返回一个头的值
      >int getIntHeader(String name)
      >long getDateHeader(String name )
      >Enumeration<String> getHeader(String name )
    >通过User-Agent 识别用户浏览器类型
    >获取URL;
   http://locahost:8080/day10_2/Aserlet?username=xxx&password=yyy
     >String getScheme();获取协议  http
     >String getServerName():获取服务器名: localhost
     >String getServerPort():获取服务器端口:8080
     >String getContextPath();获取项目名:/day10_2
     >String getServletPath();获取Servlet路径:/Aservlet
     >String getQueryString();获取参数部分,?号后的东西 :username=xxx&password=yyy
     >String getRequestURI():获取URI=项目名+Servlet路径:/day10_2/Aserlet
     >String getRequestURL() 获取请求URL=不包含参数的整个请求路径:http://locahost:8080/day10_2/Aserlet
   referer :用于判断链接来自那里,可以判断是否来自本站的,可以防盗链  如:servletForReferer
  
   获取请求参数:客户端发给服务器的,有可以是post,也有可能是get
   请求参数:有一个参数一个值 ,也有多个值
   >String getParameter(String name )获取指定名称的请求参数值,适用于单值请求参数
   >String[] getparameterValues(String name) 适用用一参数,多个值
   >Enumeration<String> getparameterName();获取所有请求参数
   >Map<String,String[]> getParameterMap(); 获取所有参数 ,其中Key参数名,value为参数值


  请求转发和请求包含
  // 解释:如下 语句
  // 使用request 获取RequestDispatcher对象,request对象,调用 getRequestDisspatcher方法,通过传入的参数
     "/MyServlet"来和相应的servlet联系在一起,来生成一个RequestDispatcher对象
   RequestDispatcher rd = request.getRequestDisspatcher("/MyServlet")
   请求转发: rd.forward(request,response )
 请求包含: rd.include(request,response)
  > 一个请求跨多个servlet,需要使用转发和包含
  > 请求转发:由下一个servlet完成响应体,当前servlet可以设置响应头(留头不留体) 第一个servlet只返回给客户端头的东西
  > 请求包含:由两个servlet 共同来完成响应体(都留)
  request域:(一般用于两个servlet)
  servlet中三大域对象: request,session,application 都有如下三个方法
 
    //setAttribute() 用于前一个servlet保存数据
    >void setAttribute(string name ,object values)
    >object getAttribute(string name )
    >void removeAttribute(String name)
      >说明:同一请求范围内使用 request.setAttribute(),request.getAttribute()来传值
                                  前一个servet调用 request.setAttribute()来保存值 ,后一个servlet调用 request.getAttribute()来读取值
    请求转发和和包含,比重定向效率高,因为只有一个请求,如果地址栏里发生变化 ,必需要重定向,如果下一个servlet要获取参数,必须用转发或包含


我的JavaWeb学习2_第2张图片 

 

                     
   200 OK  // 200成功 ,302,重定向,404客户端找到不资源, 500 服务器的错误,表示资源找到,处理 出错,
   Content-Type:text/html;charset=utf-8 //响应头是一个健值 对
   Content-Type:text/html;charset=gbk //响应头是一个健值 对,一个头也可以对应多的头
  .........
  <html>
   fsfdjijfd
   fjeijfd
   feijf
  </html>
  

你可能感兴趣的:(我的JavaWeb学习2)