pageContext.findAttribute()函数也查找请求范围



我的jsp文件中有以下代码片段:

<%
String name = request.getParameter("name");     
out.println(pageContext.findAttribute("name"));
%>
<br><br>
Name in request scope: <%=name %><br>

传递的参数name = Swatanya的输出如下:

null 
Name in request scope: swatanya

为什么findAttribute返回null当有值在请求范围的名称参数

请求参数和属性是有区别的。别把两者搞混了。

如果你在谈论查询字符串,那么它作为请求参数而不是属性传递。


JspContext#findAttribute()的状态:

按顺序在页面、请求、会话(如果有效)和应用程序范围中搜索命名属性,并返回与null相关的值。

ServletRequest#getParameter()的状态:

返回请求参数的值为String,如果参数不存在则返回null。请求参数是随请求一起发送的额外信息。对于HTTP servlet,参数包含在查询字符串或提交的表单数据中。


如果需要的话,你可以这样做:

request.setAttribute("name", request.getParameter("name"));

注意:

我建议你使用JavaServer Pages标准标签库或表达式语言,而不是Scriplet,更容易使用和更少出错

在第一种情况下,您正在请求范围中的特定范围中搜索。在第二种情况下,您按顺序搜索页面,请求,会话和应用程序范围。这意味着如果在get参数的情况下,如果name不在请求范围内,它将返回null在find属性中它会搜索所有范围

相关内容

  • 没有找到相关文章

最新更新