Response
-
概述:Response 是客户端和服务器端交互时候的响应对象,主要功能是用来设置响应消息的,我们无需自己创建,是由 Tomcat 服务器创建的。Response 的数据格式可参考这篇文章。
-
设置相应行中的状态码
setStatus(int sc) // 设置状态码 -
设置响应头
setHeader(String name , String value) // 参数:名称,值 -
设置响应体
- 获取输出流
PrintWriter getWriter(); // 字符输出流 ServletOutputStream getOutputStream(); // 字节输出流- 使用输出流,将数据输出到客户端浏览器(对于IO流不熟悉的可参考下这篇文章)
response.getWriter().write("hello world"); // 使用字符流写数据到 浏览器上 response.getOutputStream().write(97); // 使用字节流写数据到 浏览器上
重定向(Redirect)
-
概述:重定向,资源跳转的方式

-
重定向的特点(这里可对比学习下Request的请求转发)
- 地址栏路径发生变化
- 重定向可以访问其他站点(服务器)的资源
- 重定向是两次请求,不能使用 request 对象来共享数据
-
示例代码
response.setStatus(302); // 设置状态码 response.setHeader("location","path"); // path 是重定向中另一个服务器的路径 response.sendRedirect("path"); // 重定向,跳转到另一个网址 -
再来回顾下,请求转发(forward)
- 转发地址栏路径不变
- 转发只能访问当前服务器的资源
- 转发是一次请求,可以使用 request 对象来共享数据
-
示例代码
String data = "hello!"; // 设置需要传递的数据 request.setAttribute("data",data); // 将数据存储到 request 共享域中 request.getRequestDispatcher("/path").forward(request,response); // 转发请求
路径写法
相对路径
相对路径:通过相对路径不可以确定唯一资源,例如:./index.html
规则:找到当前资源和目标资源之间的相对位置的关系
- ./ :当前目录
- …/:后退一级目录
绝对路径
绝对路径:通过绝对路径可以确定唯一资源,例如:http://localhost/demo/resp
规则:判断定义的路径是给谁用的?判断请求从哪儿发出?
- 给客户端浏览器使用:需要加上虚拟目录(即项目的访问路径)
- 动态获取虚拟目录:request.getContextPath()
- 给服务器使用:不需要加虚拟目录
- 转发路径:forward()
服务器数据输出到浏览器
输出字符数据
步骤:
-
获取字符输出流,写数据不需要刷新,自动刷新
response.getWriter(); -
输出数据到浏览器
response.getWriter().write("hello");
注意:(中文乱码问题)
-
告诉浏览器,服务器发送的消息体数据格式和编码格式
response.setHeader("contetn-type","text/html;charset=utf-8"); -
设置编码,在获取流之前设置(一定设置)
response.setContentType("text/html;charset=utf-8");
输出字节数据
步骤:
-
获取字节输出流
response.getOutputStream(); -
输出数据
response.getOutputStream().write(97);
输出图片
步骤:
-
设置数据格式
response.setContentType("image/jpeg"); -
获取字节输出流
ServletOutputStream out = response.getOutputStream(); -
输出数据
// 读取图片的字节流 FileInputStream in = new FileInputStream("path"); // 将图片输出到页面上 byte[] bys = new byte[1024]; int len; while((len = in.read(bys)) != -1){ out.write(bys,0,len); }
本文详细介绍了JavaServlet中的Response对象及其用途,包括设置状态码、响应头、使用字符和字节输出流向浏览器发送数据,以及重定向和请求转发的区别。还讨论了路径的相对和绝对写法,以及处理字符数据、字节数据和图片的技巧,同时提到了解决中文乱码的方法。
938

被折叠的 条评论
为什么被折叠?



