我试图将请求的属性传递到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") %>