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();
- 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”);