getAttribute()
和类getParameter()
内的方法有什么区别HttpServletRequest
?
getAttribute()
和类getParameter()
内的方法有什么区别HttpServletRequest
?
Answers:
getParameter()
返回http请求参数。那些是从客户端传递到服务器的。例如http://example.com/servlet?parameter=1
。只能退货String
getAttribute()
仅用于服务器端使用-您在请求中填充可以在同一请求中使用的属性。例如,您在Servlet中设置了一个属性,并从JSP中读取了该属性。可以用于任何对象,而不仅仅是字符串。
${attrName}
在jsp页面中使用类似内容时,这些是您使用request.getSession().setAttribute()
?设置的属性。
getAttribute()
不只是服务器端使用:你可以在前端属性数据-例如JSP页面,并显示它
通常,参数是最常见的字符串值,它是从客户端发送到服务器(例如,表单发布)并从servlet请求中检索的。令人沮丧的例外是ServletContext初始参数,该参数是在web.xml中配置并存在于服务器上的字符串参数。
属性是存在于指定范围内的服务器变量,即:
application
,适用于整个应用程序的生命周期session
,在整个会话期间可用request
,仅在请求的生命周期内可用page
(仅JSP),仅可用于当前的JSP页面 request.getParameter()
我们用于request.getParameter()
提取请求参数(即通过发布html表单发送的数据)。的request.getParameter()
始终返回String
值和数据来自客户端。
request.getAttribute()
我们request.getAttribute()
用来获取在服务器端添加到请求范围的对象,即使用request.setAttribute()
。您可以在此处添加任何类型的对象Strings
,自定义对象,实际上是任何对象。您将属性添加到请求并将请求转发到另一个资源,客户端对此一无所知。因此,所有处理此问题的代码通常都在JSP / servlet中。您可以request.setAttribute()
用来添加额外信息,并将当前请求转发/重定向到另一个资源。
例如,考虑一下first.jsp,
//First Page : first.jsp
<%@ page import="java.util.*" import="java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>
和second.jsp:
<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>
在浏览器中,运行first.jsp?CLIENT = you,浏览器上的输出为
From Which Page : *first.jsp*
Data From Client : you
getAttribute()
和之间的基本区别getParameter()
是,第一种方法提取一个(序列化的)Java对象,而另一种方法提供一个String值。对于这两种情况,都给出了一个名称,以便可以查找和提取其值(字符串或Java Bean)。
- 的getParameter() :
<html>
<body>
<form name="testForm" method="post" action="testJSP.jsp">
<input type="text" name="testParam" value="ClientParam">
<input type="submit">
</form>
</body>
</html>
<html>
<body>
<%
String sValue = request.getParameter("testParam");
%>
<%= sValue %>
</body>
</html>
request.getParameter("testParam")
将从名为“ testParam”的输入框的张贴表单中获取值,即“客户参数”。然后将其打印出来,因此您应该在屏幕上看到“客户端参数”。因此request.getParameter()将检索客户端已提交的值。您将在服务器端获得该值。
- 的getAttribute()
request.getAttribute()
,这就是全部完成服务器端。您将属性添加到请求,然后将请求提交到另一个资源,客户端对此一无所知。因此,所有处理此问题的代码通常都在servlets.getAttribute中始终返回对象。
来自http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
“参数”是从客户端(通常是从HTML表单)发送到服务器的名称/值对。参数只能具有字符串值。有时(例如,使用GET请求),您会看到这些编码直接编码到URL中(在?之后,每个以name = value的形式出现,并且每对之间用&分隔)。有时,使用POST等方法时,它们会包含在请求的正文中。
“属性”是服务器本地的存储机制-除非明确实现,否则存储在作用域属性中的任何内容都不会在服务器外部传输。属性具有字符串名称,但存储对象值。请注意,属性特定于Java(它们存储Java对象),而参数则与平台无关(它们只是由通用字节组成的格式化字符串)。
共有四个属性范围:“页面”(仅适用于JSP和标记文件),“请求”(仅限于当前客户端的请求,在请求完成后销毁),“会话”(存储在客户端的会话中,无效)会话终止后),“应用程序”(在应用程序的整个部署生存期内供所有组件访问)。
最重要的是:从客户端获取数据时使用参数,在服务器上存储对象以供应用程序内部使用时使用范围属性。
getAttribute()和getParameter()之间的基本区别是返回类型。
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)