java请求转发
结构以及代码如下
Servlet1
public class Servlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求的参数 (查看办事材料)
String username=req.getParameter("username");
System.out.println("在Servlet(柜台1)中查看参数(材料):"+username);
//给材料盖章,并传递到servlet2(柜台2)去查看
req.setAttribute("key","柜台1的章");
//问路:servlet2(柜台2)怎么走
RequestDispatcher requestDispatcher=req.getRequestDispatcher("/servlet2");
//走向servlet2(柜台2)
requestDispatcher.forward(req,resp);
}
}
Servlet2
public class Servlet2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求的参数(办事的材料)查看
String username=req.getParameter("username");
System.out.println("在Servlet2(柜台2)中查看材料:"+username);
//查看 柜台2 是否有盖章
Object key1=req.getAttribute("key");
System.out.println("柜台1是否有章:"+key1);
//处理自己的业务
System.out.println("Servlet2 处理自己的业务");
}
}
XML配置如下
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-class>com.example.demo.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Servlet2</servlet-name>
<servlet-class>com.example.demo.Servlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet2</servlet-name>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
浏览器地址输入 (参数为 username=dijia)
控制台输出
请求转发的特点:
1.浏览器地址栏没有变化
2.是一次请求
3.共享Request域中的数据
4.可以转发到WEB-INF目录下
5.只能访问工程以内的资源
以上根据尚硅谷JavaWeb教程整理