Web01

来源:互联网 发布:数据安全中心 编辑:程序博客网 时间:2024/05/03 19:11

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,.html text/html 普通文本 .txt text/plain RTF文本 .rtf application/rtf GIF图形 .gif image/gif JPEG图形 .ipeg,.jpg image/jpeg au声音文件 .au audio/basic MIDI音乐文件 mid,.midi audio/midi,audio/x-midi RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio MPEG文件 .mpg,.mpeg video/mpeg AVI文件 .avi video/x-msvideo GZIP文件 .gz application/x-gzip TAR文件 .tar application/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(“地址”)//设置代码重定向,前提状态码为302response.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()//获取到客户端的iprequest.getRemoteAddr();//收获到服务器的内容request.getLocalPort

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

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

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

0 0
原创粉丝点击