A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 巴拉巴拉x 于 2018-5-21 10:32 编辑


request&response



读取WEB工程下的文件
  • 传统方式读取文件,写的路径是相对路径,相对的是JVM的路径
    • JVM在运行环境的文件里面,在java项目中jre和src在同一级目录下
    • 传统方式已经不能读取web工程下的文件:路径不明确
    • eclipce有一个工作空间,服务器也有它自己的工作空间.
  • 使用ServletContext对象来读取文件
    • ServletContext是服务器创建的对象.他的作用范围是服务器的那个项目工作空间.
    • InputStream getResourceAsStream(String path);
    • String getRealPath(String path):

ServletContext的总结
  • 读取全局化(初始化)参数:
    • 在web.xml中配置的参数,标签就是<Context-param ><param-name > 值 </param-name ></Context-param >.
  • 获取文件的mime类型:
    • String getMimeType(String file);用ServletContext对象来调用.返回值是一个字符串,
  • 作为域对象存取数据
    • 范围:整个web项目,而且是全局对象
    • 创建:服务器启动的时候,服务器为每个web项目创建一个单独的ServletContext对象
    • 销毁:服务器关闭,或者移除web项目的时候销毁
  • 读取web工程下的文件
  • 使用类加载器来读取文件
    • 类的加载器是用来加载class文件,将class文件加载到内存
      • 类名.class.getClassLoader().getResourceAsStream(fiel name);

  • 如果有Servlet环境,就用ServletContext对象来读取文件,如果没有Servlet环境就用类加载器来读取文件.


request&response



文件下载
  • response
    • 概述:代表响应的对象,从服务器向浏览器输出内容
    • 常用API
      • HttpServletResponse类
        • 响应行
          • setStatus(int sc):设置状态码
        • 响应头
          • addDateHeader
          • addHeader
          • addIntHeader
          • setDateHeader
          • setHeader
          • setIntHeader
        • 响应体:
          • 方法在ServletRespose类中
          • getOutputStream
          • getWriter


    • 文件下载方式
      • 超链接的方式:前提-->文件类型是浏览器不支持的类型
      • 手动编写代码的方式完成文件的下载
        • 设置响应头里面的两个属性和一个流
          • Content-Type :文件的MIME类型
          • Content-Disposition :以文件下载的形式打开文件
          • InputStream :文件的输入流


    • 文件下载的核心思想
      • IO 流的读/写


中文文件下载
  • iso-8859-1:缓存区默认编码标准
  • IE浏览器采用的编码方式是URL
    • URLEncoder.encode(filename, "UTF-8");
  • 火狐浏览器采用的编码方式是base64


response 输出响应内容的方法


  • 向页面响应的方法
    • 字节流
      • response.getOutputStream().write("内容".getBytes())-->不是中文
      • response.getOutputStream().write("内容".getBytes(字符集编码));这个编码在设置之前先设置浏览器打开时采用的编码方式,这两种方式要一样.如果本来就一样就不会乱码,如果不一样就会乱码.
      • 步骤
        • 设置浏览器打开的编码
        • 设置中文字节去除时候的编码

    • 字符流
      • response.getWriter()-->不是中文
      • 一定会乱码,response使用的字符流有缓冲区的.这个缓冲区的默认的编码是ISO-8859-1,这个编码方式不支持中文.
      • 解决方式
        • 设置response的字符流的缓冲区的编码
        • 设置浏览器默认打开时使用的编码.
        • response.sendRedirect("路径"):重定向简写.
      • 步骤
        • 设置浏览器打开的时候的编码
          • response.setHeader("Context")
        • 设置response的缓冲区的编码
          • response.setCharacterEncoding(编码方式)




request


  • 概述
    • 代表用户的请求,把从客户端发送来的请求行,请求头,请求体封装成一个ServletRequest对象,即是request.
  • Request的API
    • 功能
      • 获得客户机的相关信息
        • 获得请求方式
          • getMethod()
        • 获得客户端的IP
          • getRemoteAddr()
        • 获得请求的路径
          • getRequestURL()
          • getRequestURI()
        • 获得工程名
          • getContextPath()

      • 获得从页面提交的参数
        • getParameter(String name)
        • getParameterValues(String name)
        • getParameterMap();
      • 作为域对象存取数据
        • setAttribute()
        • getAttribute()
        • removeAttribute()


  • request作为域对象
    • 存取数据
      • setAttribute(String name, String value)
      • getAttribute(String name)
      • removeAttribute(String name)
    • 作用范围
      • 就是一次请求的范围
    • 创建和销毁
      • 创建:
      • 销毁

  • 重定向和转发的区别(redirect和forward的区别)
    • 重定向
      • sendRedirect(路径)
      • 两次请求,两次响应
      • 地址栏会发生变化
      • 路径要包含工程名
      • 可以跳转到任意网站
    • 转发
      • getRequestDispatcher(路径)
      • 一次请求,一次响应
      • 地址栏不会发生变化
      • 路径不用写工程名
      • 只能在服务器内部的同一工程进行转发




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马