发布于2021-06-08 09:11 阅读(292) 评论(0) 点赞(25) 收藏(5)
请求转发是指,服务器收到请求后,从一次资源跳转到另一个资源的操作。
举个例子:
package servlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.servlet1先获取请求参数,看看servlet1需要做的事
String username = request.getParameter("username");
System.out.println(username);
//.....部门1提供自己的服务
//2.servlet1设置一个参数证明servlet1转发的请求(部门1盖一个章)
request.setAttribute("key1", "servlet1");
//3.查询servlet2的路径,(部门1将其转交给部门1)
RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet2");
//4.把请求和响应转发给servlet2
dispatcher.forward(request, response);
}
}
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class Servlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//部门2查看客户需要的服务
System.out.println("Servlet2查看参数: "+request.getParameter("username"));
//部门2查看部门1有没有盖章,判断是否继续服务
System.out.println("Servlet2查看是否有Servlet1的证明: "+request.getAttribute("key1"));
//部门2处理完自己的服务,
System.out.println("Servlet处理自己的业务");
}
}
注意
这时候如果我们将Servlet2放在WEB_INF下,那么我们就无法直接访问servlet2了;
但是我们可以通过请求转发来实现访问servlet2;
思考:登录功能和这种请求转发方法类似,我们无法跳过登录界面直接访问系统,所有我们可以用这种请求转发的方法来实现;
请求重定向:是指客户端发送请求,然后服务器告诉客户端,我给你一个地址,你去新的地址访问(之前的地址可能已经被废弃,或者之前的地址[Servlet]无法满足需求);
第一种方案
// 设置响应状态码 302 ,表示重定向,(已搬迁)
resp.setStatus(302);
// 设置响应头,说明 新的地址在哪里
resp.setHeader("Location", "http://localhost:8080");
第二种方案(推荐使用)
resp.sendRedirect("http://localhost:8080");
请求重定向的特点
为什么呢?
因为,这时如果我们使用请求转发(整个处理业务过程就只是一次请求),浏览就会记录我们这次请求(操作数据库),一旦客户端刷新页面,就会执行(操作数据库)的请求,这时很严重的bug,我们要避免,所有就要用到请求重定向;
总结:当我们修改数据库中的数据的之后,就需要使用请求重定向来避免上述的问题了;
作者:java之恋
链接:http://www.javaheidong.com/blog/article/219075/47e838543b1e3d1b11f3/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!