setAttribute进入servlet的问题

时间:2015-07-04 05:43:17

标签: jsp servlets

我尝试将请求的属性传递给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时,我没有任何属性。 我错过了什么吗?

提前谢谢

编辑:我没有发布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>

2 个答案:

答案 0 :(得分:1)

参数是浏览器在发送

等请求时发送的数据
http://localhost/foo?a=1&b=2

在上面的例子中,请求有两个参数,“a”和“b”,其值为“1”和“2”。参数总是字符串。

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

要获取属性,请不要使用getParameterMap()。返回参数。您使用getAttribute()

从JSP中你可以简单地使用

${str}

获取并打印名为"str"的属性。

答案 1 :(得分:0)

感谢参数和属性之间的澄清,我发现我可以按照以下方式显示我的属性:

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