HttpServletRequest类中的getAttribute()和getParameter()方法有什么区别?
当前回答
另一种应该使用.getParameter()的情况是在jsp中转发参数:
<jsp:forward page="destination.jsp">
<jsp:param name="userName" value="hamid"/>
</jsp:forward>
在destination.jsp中,你可以像这样访问userName:
request.getParameter("userName")
其他回答
getParameter()返回http请求参数。那些从客户端传递到服务器的信息。例如http://example.com/servlet?parameter=1。只能返回字符串 getAttribute()仅供服务器端使用—您可以在同一个请求中使用属性填充请求。例如,在servlet中设置一个属性,然后从JSP中读取它。可以用于任何对象,而不仅仅是字符串。
通常,参数是一个字符串值,最常见的是从客户端发送到服务器(例如表单post)并从servlet请求检索的值。令人沮丧的例外是ServletContext初始参数,它们是在web.xml中配置的字符串参数,存在于服务器上。
属性是存在于指定范围内的服务器变量,即:
应用程序,在整个应用程序的生命周期内可用 会话,在会话的生命周期内可用 请求,仅在请求的生命期内可用 页面(仅限JSP),仅对当前JSP页面可用
另一种应该使用.getParameter()的情况是在jsp中转发参数:
<jsp:forward page="destination.jsp">
<jsp:param name="userName" value="hamid"/>
</jsp:forward>
在destination.jsp中,你可以像这样访问userName:
request.getParameter("userName")
重要的是要知道属性不是参数。
属性的返回类型是Object,而参数的返回类型是String。在调用getAttribute(字符串名称)方法时,请记住必须强制转换属性。
此外,没有servlet特定的属性,也没有会话参数。
这篇文章的目的是联系@Bozho的回复,作为对其他人有用的额外信息。
getAttribute()和getParameter()之间的基本区别是返回类型。
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)
推荐文章
- 在流中使用Java 8 foreach循环移动到下一项
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 用Java计算两个日期之间的天数
- 如何配置slf4j-simple
- 在Jar文件中运行类
- 带参数的可运行?
- 我如何得到一个字符串的前n个字符而不检查大小或出界?
- 我可以在Java中设置enum起始值吗?
- Java中的回调函数
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 在Java中,流相对于循环的优势是什么?
- Jersey在未找到InjectionManagerFactory时停止工作
- 在Java流是peek真的只是调试?
- Recyclerview不调用onCreateViewHolder
- 将JSON字符串转换为HashMap