JAVA-JAVAWeb 转发请求和重定向的区别及代码实例
转发请求与重定向
1.两者的说明与区别
说明
**转发请求:**使servletContext.getRequestDispatcher(“另外一个servlet的地地址”).forward(req,resp)通过获取另外一个sever的url地址的信息
**重定向:**通过一个servlet 的地址跳转到另外一个servlet地址,显示另外一个地址的信息
区别:
请求转发:不会改变url,只是获取另外一个url的地址,而重定向则会改变改变url,实现url的跳转
2.代码实例
2.1转发请求
2.2.1 代码
package com.zhenwei.servlet;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
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 ServletDemo2 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//ServletContext 来获取转发getRequestDispatcher
ServletContext servletContext=this.getServletContext();
System.out.println("进入了 ServletDemo2 目录");
//获取 /jp1路径转发的信息,调用forword 实现请求转发
servletContext.getRequestDispatcher("/jp1").forward(req,resp);
}
2.2.2 运行结果
1.地址栏输入 jp2
2.地址栏会转发显示 jp1的信息,但是地址栏为改变
3.hearder请求类型为200,地址为jp2的地址
2.2重定向
2.2.1 代码
package com.zhenwei.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 RedirectServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*修改信息头的 地址以及状态
resp.setHeader("location","/respond_war/img");
resp.setStatus(302);*/
//转发的地址
resp.sendRedirect("/respond_war/img");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
2.2.2 运行结果
1.在地址栏输入跳转的地址栏red
2.会跳转到指定的地址img
3.hearder请求类型为302,地址为跳转的img地址