如何实现多个servlet之间的跳转和传递数据
程序员文章站
2024-03-15 10:38:47
...
1.实现多个servlet间的跳转(forward)
request.getRequestDispatcher("/servlets/BServlet").forward(request, response);
2.多个servlet间的数据传递
(1)request作用域的方式传输数据
存储数据
request.setAttribue(“name”,object);
(2)取数据
request.getAttribue(“name”);
可以传递一切需要传递的内容。
ASservlet
public class AServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
System.out.println("嘿嘿");
String name="依依";
request.setAttribute("name", name);//存数据
request.getRequestDispatcher("/servlets/BServlet").forward(request, response);
}
}
BServlet
public class BServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
System.out.println("嘚嘚");
//取数据,强制类型转换
String name=(String)request.getAttribute("name");
System.out.println("name:"+name);
}
}
(3)重定向
response.sendRedirect("/应用名/网名");
重定向传输数据
不能使用setAttribute只能使用地址栏拼接的方式
存数据
response.sendRedirect("/Servlet_day /d?name=yiyi")
取数据
String name =Request.getParameter(“name”);
AServlet
public class AServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
System.out.println("嘿嘿");
//request只适用于一次传递数据
//String name="依依";
//request.setAttribute("name", name);//存数据
//存数据
response.sendRedirect("/My/servlets/BServlet?name=yiyi");
}
}
BServlet
public class BServlet extends HttpServlet{
public void service(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
System.out.println("嘚嘚");
//取数据,强制类型转换
//String name=(String)request.getAttribute("name");
String name = request.getParameter("name");
System.out.println("name:"+name);
}
}
有数据的话用forward,没有数据的话用重定向。
forward和redirect的区别
(1)forward:地址栏不会发生变化,一次请求。(服务器内部跳转)(client-c-d)
redirect:地址栏会发生变化,两次和多次请求,不能使用request作用域传递数据。(client-c-client-d)
上一篇: 多个servlet之间数据共享实现方案
下一篇: Vue之组件