JavaWeb:Request和Response(6)
导读:JavaWeb,浏览器发送请求给服务器,服务器中对应的资源A接收到请求 资源A现在无法处理该请求,就会给浏览器响应一个302的状态码+location的一个访问资源B的路径
JavaWeb

- 浏览器发送请求给服务器,服务器中对应的资源A接收到请求
- 资源A现在无法处理该请求,就会给浏览器响应一个302的状态码+location的一个访问资源B的路径
- 浏览器接收到响应状态码为302就会重新发送请求到location对应的访问地址去访问资源B
- 资源B接收到请求后进行处理并最终给浏览器响应结果
这整个过程就叫重定向
实现方式
方法一:
response.setStatus(302);
response.Header("location","资源B的路径")
方法二:
response.sendRedirect("资源B的路径")
代码实现
创建CServlet,输出C并重定向到D
@WebServlet(value = "/c")
public class CServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("C请求");
//设置重定向
response.sendRedirect("d");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
}
}
创建DSelvet,输出D
@WebServlet(value = "/d")
public class DServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("D请求");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
}
}
重定向的特点
- 浏览器地址栏路径发送变化当进行重定向访问的时候,由于是由浏览器发送的两次请求,所以地址会发生变化

- 可以重定向到任何位置的资源(服务内容、外部均可)因为第一次响应结果中包含了浏览器下次要跳转的路径,所以这个路径是可以任意位置资源。
- 两次请求,不能在多个资源使用request共享数据因为浏览器发送了两次请求,是两个不同的request对象,就无法通过request对象进行共享数据
介绍完请求重定向和请求转发以后,接下来需要把这两个放在一块对比下:

9、Response响应字符数据
实现方式
1、通过response对象获取字符输出流
PrintWriter writer = response.getWriter();
2、写数据
writer.writer("aaa");
注意:
- 该流不需要关闭,随着响应结束,response对象销毁,由服务器关闭
- 中文数据乱码:原因通过Response获取的字符输出流默认:ISO-8859-1
response.setContentType("text/html;charset=utf-8");
代码演示
@WebServlet(value = "/resp2")
public class respon02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1、获取响应输出流
PrintWriter writer = response.getWriter();
// 2、写数据
writer.write("aaa");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
}
}
10、Response响应字节输出流
实现方式
1、通过Response对象获取字节输出流
ServletOutStream outputStream = response.getOutputStream();
2、写数据
outputStream.write("字节数据");
代码演示
@WebServlet(value = "/resp3")
public class response3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1、获取字节输入流
FileInputStream fileInputStream = new FileInputStream("D:\\file\\java\\response-request\\src\\main\\webapp\\imgs\\Desert.jpg");
// 2、获取字节输出流
ServletOutputStream outputStream = response.getOutputStream();
// 3、写数据
byte[] bytes = new byte[1024 * 8];
int len;
while ((len = fileInputStream.read(bytes)) != -1){
outputStream.write(bytes,0,len);
}
fileInputStream.close();
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
}
}
以上IT袋网网介绍的JavaWeb 以及 Request和Response的具体内容,未经IT袋网网(www.itdai.com)允许禁止转载!
相关阅读
-
dns服务器未响应怎么修复 分享dns未响应最简单的修复办法
今天为大家介绍dns服务器未响应怎么修复和分享dns未响应最简单的修复办法的教程内容,继续往下看吧! 很多人在浏览网页时,经常会遇到DNS服务器未响应的情况,那么什么是DNS服务器?DNS未
-
个人网站备案流程 工信部个人网站备案过程讲解
您可能不了解个人网站备案流程和工信部个人网站备案过程讲解的IT小经验,继续往下看吧! 嗨,大家好,我是希留。 前面文章介绍了下使用https访问网站的相关配置,然后发现访问https时灵时
-
HTTP状态码深入解析:401 Unauthorized
为大家介绍HTTP状态码深入解析的教程内容,接下来一起来看看吧。 在互联网通信中,HTTP状态码是用来表示服务器响应的一种方式。 当我们在浏览器中访问网页时,服务器会返回一个状态码,
-
什么是跨站脚本 XSS攻击?
为网友解答什么是跨站脚本的相关话题,下面为详细的介绍。 跨站脚本(Cross-Site Scripting,XSS)是一种常见的网络安全漏洞,攻击者利用该漏洞在受害者的网页中插入恶意脚本,从而能够获取


