day03总结

**

ServletContext

**
servletContext:
定义:
是服务器对象,可以获得整个web项目的初 始化的一些参数。本质是是一个容器,负责存储一些内容。
注意:
资源是整个web项目的资源,是共享的,且只有这一个容器(一个项目只有一个根目录,即对应一个管理者或者一个容器)。

如何获取servletContext对象
使用this关键字
第一种:
this.getServletConfig().getServletContext()
第二种:
this.getServletContext()
获取项目下的资源:
get 获取 set赋值

  1. getResourAsStream()—获取项目资源
    attribut–属性(用于获取某个资源常用getAttribute(String key))

  2. get RealPath("")—获取发布项目的在本地的真实路径(绝对路径)。
    注意: 括号里采用的是字符串拼接方式
    如:自定义名.getRealPath("/img/1.jpg");—则其路径为: 真实路径+\img\1.jpg

  3. setAttribute( String key , Object value) 存数据 和集合map相似,key与值的方式 。
    注意: 重复设一样的值相当于改值

  4. removeAttribute( String key ) 删除数据
    注意: 如果从容器中没有获得数据的话 返回值是null 。
    全局设置参数:

    1. 首先在web.xml中设置数据
    2. 注意:
      全局变量:它的格式也是key=value的方式。
      全局编码
      如:
   <context-param>
    <param-name>charset</param-name>
    <param-value>utf-8</param-value>
</context-param>

查看全局参数

sc.getInitParameter(“param-name的名称”);

**

Response

**
response分为:行头体三部分
行:
固定格式: 协议版本(固定的HTTP/1.1) 状态码
状态码:
200:请求正常响应成功
302 :重定向
304:浏览器读取缓存
404: 服务器资源找不到
500:服务器报错
设置状态码: setStatus()
发送错误: sendError()
头:
格式: key:value
响应头:
location:地址(一般可以与状态码302重定义使用)response.sendRedirect(“跳转路径”)

底层代码:

 public void sendRedirect(String path变量){
       response.setStatus(302);
       response.setHeader("location" , path变量);
 }
                 refresh:定时刷新(浪费资源)
                    1.定时刷新
                          response.setHeader("refresh" , "秒")
                       2.定时跳转
                         response.setHeader("refresh" , "秒;url=地址")
                  content-encoding:内容编码(互联网在数据传输的时候,将数据压缩打包的格式。如 zip压缩,rar压缩等。
                  content-disposition: 下载使用。
                      格式:
                      key:value
                           content-disposition: attachment;filename=文件的名称。
                  content-type: 处理编码使用(一般在流的位置设置响应体的编码)
                              content 内容 -type   类型

体:
服务器响应回来其是就是html源码
流:
字符流:一般用于输出输入文字信息
声明: PrintWriter writer = response.getWriter();
字节流:一般用于输出输入文件,视频,音频等资源。
声明: response.getOutputStream().write(“内容”);
打印流:一般输出输入文件信息或者文字信息
write(“文本”) 输出文字信息
write(文件) 输出文件信息
**

乱码:

**
在页面响应出现乱码:一般采用 设置响应头编码格式和数据类型response.setHeader(“content-type” , “text/html;charset=utf-8”); (注意放到第一个行)
**

下载案例

**

  1. 设置响应头 content-disposition
  2. 获取下载资源
  3. 设置输出流(字符流或者字节流看文件来确定)
  4. 设置输出流

编码:

 //设置下载的头(放到第一行)
    response.setHeader("content-disposition" , "attachment;filename=2.jpg");
    //1.程序获得图片 获得图片的流
    InputStream is = this.getServletContext().getResourceAsStream("/img/1.jpg");
    //2.获得输出的字节流
    ServletOutputStream os = response.getOutputStream();
    //3.使用字节流将图片输出即可 is -> os 流转换(导入第三方jar包)
    IOUtils.copy(is, os);//直接转换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值