大数据正式15

大数据正式15

Response、ServletConfig、ServletContext介绍:

简单补充

  • 【服务器-浏览器】乱码产生的地方 :
    1. 服务器向响应头发送数据的时候
    2. 响应头发送到浏览器的时候
    3. 浏览器解析的时候
  • 乱码的解决
    1. 服务器向响应头发送数据的时候
      1. 字符【直接发+元数据处理(2.1)】
      2. 字节【"".getBytes("编码")】
    2. 响应头发送到浏览器的时候
      1. 原数据【response.setCharacterEncoding("编码")】
      2. 二进制数据【直接发】
    3. 浏览器解析的时候
      • 服务器设置响应头的浏览器解码方式【setHeader(“Content-Type”,“text/html;charset=utf-8”)】
  • 注意:
    1. Response中:流不用关--服务器会自动关流
    2. Response中:只能获取一种流(同时获取两种流会出错)
  • 重定向:
    • 302+position

      response.setState(302);
      response.setHeader("Location","地址");
      

      response.sendRedirect("地址");
      
  • 定时刷新
    • setHeader("Refresh","时间;url=网址");
  • 禁用缓存【Expires,Cache-Control,Pragma】【历史原因,三个都得禁用,为了兼容性】
    • 大部分是好的
    • 一部分不好:验证码不能缓存;火车票

      response.setHeader("Cache-Control","no-cache")
      response.setHeader("Progma","no-cache")
      response.DataHeader("Expires",0);
      

资源跳转

  • 注:【没需求时,优先使用request方式,请求次数少,减少服务器的压力】
  • 方式1:Request请求转发【利用Request域传递数据】
    1. 服务器内发生
    2. 只有一次请求响应
    3. 一个Request对象
    4. 可以用Request域传递数据
    5. 地址栏不发生变化--浏览器不知道此次的请求
    6. 转发的地址是内部地址--不需要写应用名称
  • 方式2:Response重定向【改变地址栏、刷新】
    1. 服务器外发生的资源跳转
    2. 两次请求,两次响应
    3. 因为Request是不一样的,所以不能 用Request域来传递数据
    4. 浏览器知道重定向的存在
    5. 地址栏发生变化
    6. 刷新操作是最后请求最后一个资源
    7. 外部地址
  • 方式3:定时刷新【改变地址栏、刷新、有提示信息】
    1. 服务器外发生的资源跳转
    2. 两次请求,两次响应
    3. 因为Request是不一样的,所以不能 用Request域来传递数据
    4. 浏览器知道重定向的存在
    5. 地址栏发生变化
    6. 刷新操作是最后请求最后一个资源
    7. 外部地址

ServletConfig

  • 每个Servlet都有一个ServletConfig对象,代表当前的Servlet在web.xml中的配置信息
  • 获取:Servlet在初始化时候,传入了一个ServletConfig对象Servlet.getServletConfig();
  • 方法:
    1. 获取中的值:config.getServletName()
    2. 获取所有初始化参数的值:config.getInitParameterNmaes()【不想写死的信息放在web.xml中灵活配置】
    3. 获取指定值的初始化参数:config.getInitParameter(String key)

ServletContext

  • 代表当前web应用
  • 生命周期
    1. 这个对象在服务器启动时创建并一直存在,直到服务器关闭
    2. 生命周期和web应用一样
  • 获取方式
    1. config.getServletContext();
    2. this.getServletConfig();
  • 用途
    1. 获取web应用初始化参数:context.getInitParameter(String key)
    2. 域对象
      1. 生命周期:和web一样长
      2. 作用范围:整个web应用
      3. 主要功能:web应用里共享数据

路径问题:

  1. 相对路径(路径):Tomcat下的bin下
  2. 绝对路径(/路径):程序启动的根目录
  3. 带盘符的绝对路径(盘符:路径):在这个路径下找
  4. Servlet下解决:context.getRealPath("tomcat下的路径相对");【web的路径+文件的相对路径(发布到tomcat时的路径)】【原理:动态获取web项目的路径+项目下的资源的相对路径】
  5. 没有Servlet下,利用类加载器来加载资源:this.getClass().getClassLoader().getResource("相对于classes的路径").getPath();【基于类加载的地方的相对路径】
  6. 注意:路径的对应位置--项目资源文件的位置的对应关系【注意:最大法范围不能超过Tomcat】

你可能感兴趣的:(达内实训,大数据学习痕迹)