转发语法:
RequestDispatcher dis=request.getRequestDispatcher(“地址”);
dis.forward(request,response);
转发图解:
servlet1转发servlet2
servlet1
package cn.cfg.foward;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/servlet1")
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 向请求域中存储数据
request.setAttribute("a","祖国万岁");
// 1.转发 获取转发器 参数是地址
// 语法:request.getRequestDispatcher("地址");
RequestDispatcher dis = request.getRequestDispatcher("/servlet2");
//2. 转发器有方法 forward
dis.forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
servlet2
package cn.cfg.foward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/servlet2")
public class Servlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 取一下1中请求域中的数据
Object a = request.getAttribute("a");
System.out.println(a);
// 设置中文格式 我往浏览器上写一些东西
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("我爱你 中国");
String method = request.getMethod();
System.out.println(method);
}
}
转发和重定向的区别:
转发:
浏览器一次请求
浏览器地址栏不变
转发是服务器内部行为 浏览器不知道 转发不需要写web应用名
转发语法:
RequestDispatcher dis=request.getRequestDispatcher(“地址”);
dis.forward(request,response);
重定向:
浏览器两次请求
浏览器地址栏变
重定向可以到外网去
重定向需要写web应用名
重定向语法:
response.sendRedirect(“指向路径”);