Servlet之间的参数传递

请求转发与 request 域属性传递

在请求转发过程中,可以先将数据作为 request 对象的属性存放起来,然后再调用 forward 方法将请求转发到目标资源,目标资源可以通过 getAttribute 取出该数据。

存入属性并转发

setAttribute(String name, Object o) 方法用于将数据作为 request 对象的一个属性存放到 request 对象中,例如:request.setAttribute("data", data);

转发使用 getRequestDispatcher 方法,可以转发到另一个 Servlet,也可以转发到 JSP 页面。后续结合 JSTL 时,便可将数据呈现到 JSP 中。

在一个 Servlet 类中往 request 中写入属性并转发:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    request.setAttribute("data", "www.foxdevelop.com");
    request.getRequestDispatcher("/other").forward(request, response);
}Code language: JavaScript (javascript)

在目标 Servlet 中读取属性

在另一个 Servlet 中通过 getAttribute 取出数据:

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    response.getWriter().append(request.getAttribute("data").toString());
}Code language: JavaScript (javascript)

说明forward 转发是服务器端的操作,浏览器地址栏不会发生变化。转发过程中 requestresponse 对象被传递给目标资源,因此目标资源可以通过 request.getAttribute 获取转发前存入的属性值。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注