Servlet进阶上 第十三天

servlet响应对象

1.servlet 的响应对象 Respone ==>ServletRespone ==》不支持Http 协议 ==》子类 HttpServletRespone

2.HttpServletResponse 1.这个对象是由tomcat容器来创建 ==>在请求servlet时候,Tomcat会把这两个对象创建出来,并给service 设置为参数
2.所有的servlet 都会有一组请求与响应的对象 HttpServletRequest HttpServletResponse
3.HttpServletResponse可以来操作http的响应头,响应体 响应行

3.响应行: 响应行包含 协议(以及协议的版本) ==状态秒 ,描述信息
404路径找不到
302 重定向
304 数据缓存
500 服务器发生错误
200 请求成功

resp.sendError(404,"ggggg");

1.设置其状态码的方法 setStatus(“传输传递的是状态码”)
resp.sendError(“第一个参数传的是状态,码”,“提示信息”);

2.HttpServletResponse 来操作器响应头
压缩流 GZIPOutputStream
内存流:ByteArrayOutputStream
//设置服务器的压缩格式
resp.setHeader(“Content-Encoding”,“gzip”);
//设置文本的长度
resp.setHeader(“Content-length”,b.length+"");
//规定其为设置数组
resp.setHeader(“Accept”,“bytes”);
//不加载浏览器缓存中的数据
resp.setHeader(“Cache-Control”,“no-cache”); ==>压缩的时候一般对于的大文本 ,小文本看不出效果

3.浏览器显示本地图片 响应的内容格式: Content-Type 1.text/html 文件 jpg gif 图片 ==>把图片写入到浏览器

 resp.setHeader("Content-Type","jpg");
        InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/1.jpg");
        ServletOutputStream sot = resp.getOutputStream();
        byte[] by = new byte[1024];
        int leng;
        while((leng=is.read(by))!=-1){
            sot.write(by,0,leng);
        }
        sot.close();
        is.close();
  1. ServletContext 这个表示服务器的上下对象 ==> 它的生命周期是随着tomcat的创建而创建 随着服务器的销毁而销毁
    1.作用是获取web的全局配置文件 2.以键值对的形式来进行页面参数的传递
    2. resp.setHeader(“Content-Type”,“jpg”); 设置响应头的格式

InputStream is= this.getServletContext().getResourceAsStream("/WEB-INF/1.jpg"); ==>获取是发布到服务的图片的地址 返回值是一个输入流对象
返回的是resp.getOutputStream() 输入出流对象 > 字节 read()>返回的读取的数据 read(b) 读取是有效的字节长度

5.响应体:就是在网页上写内容 resp.getOutputStream() 主要是用于来写字节 resp.getWriter() 主要用于写字符 ==>两个不要一起用(容易产生错误)

 ByteOutputStream  bos = new ByteOutputStream();
        GZIPOutputStream gzi = new GZIPOutputStream(bos);
        byte[]b  = bos.toByteArray();
        System.out.println( b.length);
        resp.setHeader("Content-Encoding","gzip");
        resp.setHeader("Content-length",b.length+"");
        resp.setHeader("Accept","bytes");
        resp.setHeader("Cache-Control","nocache");

6.重定向==》跳转到另一个界面 resp.sendRedirect(“index.jsp”); 参数是传递的是需要跳转的界面 重定向:相当于两次请求
==>间隔多长时间在跳转到某个界面 ==> resp.setHeader(“refresh”,“2;index.jsp”); ==> 第二个参数是 “时间(秒);重定向的界面”

7.文件的下载: resp.setHeader(“Content-Disposition”,“attachment;fileName=”+fileName); 一定要加上这句话
HttpServletRequest servlet创建的请求对象 ==>继承 ServletRequest(不支持Http协议)

HttpServletRequest 一般操作请求行 与请求头 请求体

请求行:请求的地址, 请求的端口号 请求的参数 请求方法的名称,请求的访问根目录(如果项目与根目录一样,访问就是空的) …
req.getMethod(); ==>请求方法
req.getContextPath(); 请求的跟路径
req.getQueryString(); 请求拼接的参数
req.getRequestURI(); 请求的uri地址
req.getRequestURL() 请求的url地址

获取网络资源 req.getRemoteUser(); 获取到客户端的用户名
req.getRemoteAddr(); 获取到客户端的地址
req.getRemoteHost() 获取其ip地址

req.getLocalAddr() ==>获取服务器的地址
req.getLocalName(); ==>服务器ip
req.getLocalPort(); 服务器端口号
req.getServletPath(); 获取的访问路径
req.getServerName(); 服务器的ip地址
req.getServerPort(); 服务器端口号

重要方法 : req.getParameter(“uname”); 根据name值获取单个 req.getParameterValues(“hobbey”); 根据name值获取一组

中文乱码解决

设置编码格式 : resp.setContentType(“text/html;charset=utf-8”); ==>到tomcat里配置 URIEncoding=“UTF-8”
resp.setCharacterEncoding(“utf-8”);
req.setCharacterEncoding(“utf-8”);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值