将setAttribute问题转移到servlet中



我试图将请求的属性传递到servlet中,但不知何故,它似乎不起作用:

try{
        request.setAttribute("str","test");
        request.setAttribute("compt",compt);
        request.setAttribute("raton",raton); //I tried with different types
// request.getParameterMap().size() always evaluate to 0 instead of "the number of arguments"
Map<String, String[]> parameters = request.getParameterMap(); 
        for(String parameter : parameters.keySet()) { //is never looped
                String[] values = parameters.get(parameter);
                for(String v : values) out.println(v);
        }

        request.getRequestDispatcher("/index.jsp").forward(request, response);
        }
        catch(Exception ex){
            ex.printStackTrace();
        }

当然,因此,在将请求解析到JSP中时,我没有得到任何属性。我错过什么了吗??

Thx提前

编辑:我没有发布JSP,因为问题在重定向之前就已经确定了范围,但现在是:

<body>
<%PrintWriter writer = response.getWriter();
%>
visites : 
<%
Map<String, String[]> parameters = request.getParameterMap();
for(String parameter : parameters.keySet()) {
    //this is never looped , nothing is displyed
        String[] values = parameters.get(parameter);
        for(String v : values) {
            System.out.println(v);
        }
}
 %>
</body>

参数是浏览器在发送等请求时发送的数据

http://localhost/foo?a=1&b=2

在上面的示例中,请求有两个参数,"a"one_answers"b",它们的值分别为"1"one_answers"2"。参数总是字符串。

属性是完全不同的东西。它们是您想要的任何类型的对象,服务器选择将其存储在请求中,以便另一个服务器端组件(例如JSP(稍后获取它们。

若要获取属性,不需要使用getParameterMap((。返回参数。使用getAttribute((。

从JSP,您可以简单地使用

${str}

以获取并打印名为CCD_ 1的属性。

感谢您对参数和属性的澄清,我发现根据您的建议,我可以通过以下方式显示我的属性:

-1-
${raton}
-2-
<% out.println(request.getAttribute("raton"));    %>
-3-<%=request.getAttribute("raton") %>

最新更新