我尝试将请求的属性传递给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>
答案 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") %>