Web01

http工作流程,以及包含的内容

  1. 建立连接
  2. 发送请求 request
  3. 响应 response
  4. 关闭连接

对容器的支持

  1. 通信
  2. 生命周期
  3. 多线程
  4. 安全性
  5. JSP支持

servlet的生命周期

  1. 加载到容器,进行实例化
  2. 初始化init方法
  3. servlet每次请求到达
  4. destroy( )

设置MIME类型,告诉浏览器我们要响应的类型
默认为ISO-885-1
设置charset=utf-8,表示浏览器解析内容采用utf-8格式

response.setContentType("类型")

类似于,封装起来了

response.setHeader("Content-Type","text/html;charset=utf-8")

设置传输时的编码集

response.setCharacterEncoding("utf-8")

常见的MIME类型

超文本标记语言文本.htm,.htmltext/html
普通文本.txttext/plain
RTF文本.rtfapplication/rtf
GIF图形.gifimage/gif
JPEG图形.ipeg,.jpgimage/jpeg
au声音文件.auaudio/basic
MIDI音乐文件mid,.midiaudio/midi,audio/x-midi
RealAudio音乐文件.ra, .ramaudio/x-pn-realaudio
MPEG文件.mpg,.mpegvideo/mpeg
AVI文件.avivideo/x-msvideo
GZIP文件.gzapplication/x-gzip
TAR文件.tarapplication/x-tar

自动刷新功能

response.setHeader("refresh", "5;地址")

控制数据无法缓存

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","No-cache");

设置缓存过期

respons.setHeader("Expires", System.currentTimeMillis()+24*3600*1000)

设置响应头控制浏览器打开下载框

response.setHeader("Content-disponsition","attchment;filename="+"1.jpg")

共同点:两者都不会刷新页面,只在原来的页面上写数据。两个方法都是重写了writer类里面的write方法

//获取到输出流对象
OutputStream out = response.getOutputStream();
//将字符串变成字节数组
out.write((4+"").getBytes());
图片文件下载案例
//设置响应编码集
    resp.setCharacterEncoding("utf-8");
    resp.setContentType("image/jpeg");
    String imgName = "高圆圆.jpg";

//获取文件要下载的路径,通过上下文对象获取到文件的物理路径
    String path = this.getServletContext().getRealPath("/img/高圆圆.jpg");

//设置响应头控制浏览器打开下载框,操作图片中文名字中文显示也要转成字节数组,保持服务器编码一致
    resp.setHeader("Content-disposition", "attchment;filename="+new
    String(imgName.getBytes("utf-8"),"ISO8859-1"));

//获取到图片的二进制流
//FileReader fr = new FileReader(path);
    InputStream in = new FileInputStream(path);
//创建一个二进制流
    OutputStream out = resp.getOutputStream();
//创建一个缓冲区
    int len = 0;
    byte[] by = new byte[1024];

    while((len=in.read(by))>0){
        out.write(by,0,len);
    }
通过字符流操作二进制的文件,有可能出现内容丢失

重定向
  1. 重定向的状态码是302,表示资源被移走,重新请求新的资源
  2. 重定向是客户端发起的两次请求。
  3. 调用sendRedirect方法可以不用设置状态码
//重定向
response.6sendRedirect(“地址”)
//设置代码重定向,前提状态码为302
response.setHeader(“Location”,"地址");

get方法提交
  1. 地址栏直接输入服务器资源
  2. 通过js直接访问
  3. 超链接访问
  4. request.getParameter(“name属性值”)
post方法提交

1. 主要用于传输数据,客户端向服务器发送数据(文本,二进制)

特征GET方法POST方法
提交数据类型文本文本、二进制
提交数据长度不超过255个字符没有限制
提交数据可见性作为url显示作为请求的消息体
提交数据缓存缓存历史状态中不会被缓存

请求一个静态页面或图形文件时使用get提交
大数据时使用post方法
上传文件时,post方法

> 发送用户名,密码或保密信息时使用post方法

http传送的请求行的内容全部封装到request对象
//得到url地址
request.getRequestURL().toString

//得到urI地址
request.getRequestURI()

//获取到请求附带的参数
request.gerQueryString()

//获取到客户端的ip
request.getRemoteAddr();

//收获到服务器的内容
request.getLocalPort

getRequestDispatcher当前请求派发之后,这个资源将控制权移交给下一个资源
include包含:将其他资源内容包含到本资源中,最终控制权回到servlet

请求派发重定向
307302
服务器端完成的,url不变客户端完成 url要变
只能在本服务器可以跨服务器

请求只要是页面发送过来的就必须加上工程名字
js提交、超链接、重定向、都要加上项目名字
在请求派发里面/表示当前工程,请求派发默认调用dopost()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值