AI智能
改变未来

request请求转发和response重定向

使用场景
当一个用户数据管理页面被操作时,后台将进行增删改与查动作。
listUserServlet:由浏览器发送请求可以返回查询所有用户信息集合。
deleteUserByIdServlet:由浏览器发送删除请求,删除指定用户数据。
list.jsp:用来显示用户信息的jsp页面

1.执行增删改动作:用户从浏览器向servlet发送删除一条用户数据的指令,操作完成后返回已经删除本条数据的用户信息页面。

以删除操作为例,这是一个完成删除任务后需要返回显示更新后的数据列表页面的操作。
其中,先由 deleteUserByIdServlet 接收删除数据的请求,然后将重定向的响应指令发送给浏览器,接着浏览器得到重定向指令后对 listUserServlet 发出请求,请求显示更新后的用户信息列表,最后通过 listUserServlet 向浏览器发送新的用户页面信息。这就是一个包含重定向操作的请求与响应流程。
从这个流程上看,在操作中request请求发生了两次,并且两次的请求不相同,也就是说浏览器的 url 地址将总显示最后一次请求地址。

2.执行查询动作:用户从浏览器向servlet发送查询用户信息的指令,返回查询到用户信息的页面。

在显示用户信息列表的操作中,浏览器发送请求至 listUserServlet 得到用户的list页面信息,然后就需要将信息转发至 list.jsp页面,这一流程就是请求转发过程,最终用户信息显示在客户端。
这个流程上,request请求只发送一次,且只有一个,也就是说浏览器url地址就是第一次请求的地址。

总结

response.sendRedirect(request.getContextPath()+\"/userListServlet\"); //重定向 request.getRequestDispatcher(\"/listUserServlet\").forward(request,response);//请求转发

1.request请求变化:重定向request请求两次以上,并且请求体发生变化;请求转发request请求只有一次,即请求体不变。
2.浏览器地址栏变化:重定向发生变化,请求转发不变。
3.跳转资源范围:重定向可以跳转到任意资源;请求转发只能在项目内部转发。
4.方法体内地址参数(两者相对地址绝对地址都可以用):
(request.getContextPath()+\”/userListServlet\”)—重定向的地址参数:由于可以跳转到任意资源,一般设置以绝对地址 做参数即可。
(\”/listUserServlet\”) —请求转发的地址参数:由于只能在项目内部转发,因此参数设置为相对地址即可。
总的来说,有数据转发就用请求转发,如查询操作,页面需要跳转就用重定向,如增删改的行为。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » request请求转发和response重定向