如何从servlet发送参数

时间:2009-09-10 18:58:47

标签: java jsp servlets

我正在尝试使用RequestDispatcher从servlet发送参数。

这是我的servlet代码:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

 String station = request.getParameter("station");
 String insDate = request.getParameter("insDate");

 //test line
 String test = "/response2.jsp?myStation=5";

 RequestDispatcher rd;
 if (station.isEmpty()) {
     rd = getServletContext().getRequestDispatcher("/response1.jsp");

 } else {
     rd = getServletContext().getRequestDispatcher(test);
 }

 rd.forward(request, response);

} 

这是我的jsp,其中包含读取值的代码 - 但它显示为null。

    <h1>response 2</h1>
    <p>
        <%=request.getAttribute("myStation")  %>
    </p>

感谢您的任何建议。 更绿色

3 个答案:

答案 0 :(得分:14)

在servlet中以下列方式使用request.setAttribute

request.setAttribute("myStation", value);

其中value恰好是您想要稍后阅读的对象。

稍后使用request.getAttribute作为

在不同的servlet / jsp中提取它
String value = (String)request.getAttribute("myStation")

<%= request.getAttribute("myStation")>

请注意,get / setAttribute的使用范围本质上是有限的 - 属性在请求之间重置。如果您打算将值存储更长时间,则应使用会话或应用程序上下文,或者更好的数据库。

属性与参数不同,因为客户端从不设置属性。开发人员或多或少地使用属性将状态从一个servlet / JSP转移到另一个servlet / JSP。因此,您应该使用getParameter(没有setParameter)从请求中提取数据,如果需要使用setAttribute设置属性,使用RequestDispatcher在内部转发请求,并使用getAttribute提取属性。

答案 1 :(得分:3)

使用getParameter()。在应用程序内部设置和读取属性。

答案 2 :(得分:2)

在你的代码中,       String test =“/ response.jsp?myStation = 5”;

您正在将myStation = 5添加为查询字符串。存储查询字符串参数    作为Request Object中的请求参数。

因此你可以使用,

  

工作正常。谢谢。