getAttribute()
类中的getParameter()
和HttpServletRequest
方法之间有什么区别?
答案 0 :(得分:300)
getParameter()
返回http请求参数。那些从客户端传递到服务器。例如http://example.com/servlet?parameter=1
。只能返回String
getAttribute()
仅供服务器端使用 - 您可以使用可在同一请求中使用的属性填充请求。例如 - 您在servlet中设置一个属性,并从JSP中读取它。可用于任何对象,而不仅仅是字符串。
答案 1 :(得分:43)
通常,参数是最常见的从客户端发送到服务器(例如表单帖子)并从servlet request检索的字符串值。令人沮丧的例外是ServletContext initial parameters,它们是在web.xml中配置并存在于服务器上的字符串参数。
属性是存在于指定范围内的服务器变量,即:。
application
,可用于整个应用程序的生命周期session
,可在会议期间使用request
,仅在请求的有效期内可用page
(仅限JSP),仅适用于当前的JSP页面答案 2 :(得分:31)
<强>的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)。
答案 3 :(得分:26)
了解属性不是参数至关重要。
属性的返回类型是对象,而参数的返回类型是 String 。调用getAttribute(String name)
方法时,请记住必须强制转换属性。
此外,没有特定于servlet的属性,并且没有会话参数。
这篇文章的目的是连接@ Bozho的回复,作为对其他人有用的附加信息。
答案 4 :(得分:9)
getAttribute和getParameter之间的区别在于getParameter将返回由HTML表单提交的参数值或包含在查询字符串中的参数值。 getAttribute返回您在请求中设置的对象,您可以使用它的唯一方法是与RequestDispatcher一起使用。您使用RequestDispatcher将请求转发到另一个资源(JSP / Servlet)。因此,在转发请求之前,您可以设置一个可供下一个资源使用的属性。
答案 5 :(得分:5)
- 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”的输入框的已过帐表单中获取值,即“客户端参数”。然后它会打印出来,所以你应该在屏幕上看到“Client Param”。因此request.getParameter()将检索客户端已提交的值。您将获得服务器端的值。
- getAttribute():
request.getAttribute()
,这都是服务器端完成的。您将该属性添加到请求中,并且您将请求提交给另一个资源,客户端不知道这一点。所以处理它的所有代码通常都在servlets.getAttribute中,总是返回对象。
答案 6 :(得分:4)
getParameter
- 用于从客户的HTML页面获取所需信息
getAttribute
- 这用于获取先前在另一个或相同的JSP或Servlet页面中设置的参数。
基本上,如果您正在转发或只是从一个jsp / servlet转到另一个jsp / servlet,除非您选择将它们放在Object中并使用set-attribute存储在一个对象中,否则无法获得所需的信息。会话变量。
使用getAttribute,您可以检索Session变量。
答案 7 :(得分:3)
使用.getParameter()
时的另一种情况是使用jsp:
<jsp:forward page="destination.jsp">
<jsp:param name="userName" value="hamid"/>
</jsp:forward>
在destination.jsp
中,您可以像这样访问userName
:
request.getParameter("userName")
答案 8 :(得分:2)
来自http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
A&#34;参数&#34;是从客户端发送到服务器的名称/值对 - 通常,来自HTML表单。参数只能包含String值。有时(例如使用GET请求)您将看到这些 直接编码到URL中(在?之后,每个都在表单中) name = value,每对由&amp;)分隔。其他时候,他们是 当使用诸如POST之类的方法时,包含在请求正文中。
&#34;属性&#34;是服务器本地存储机制 - 没有任何存储 除非您,否则范围内的属性将在服务器外部传输 明确地实现这一点。属性具有String名称,但存储 对象值。请注意,属性特定于Java(它们存储 Java Objects),而参数与平台无关(它们是 只有通用字节组成的格式化字符串。)
总共有四个属性范围:&#34; page&#34; (对于JSP和标记 仅限文件),&#34;请求&#34; (仅限当前客户的要求, 请求完成后销毁),&#34; session&#34; (存储在 客户端会话,会话终止后失效), &#34;应用&#34; (存在所有组件在整个过程中访问 部署了应用程序的生命周期。)
底线是:从中获取数据时使用参数 客户端,在服务器上存储对象时使用范围属性 仅在您的应用程序内部使用。
答案 9 :(得分:-5)
getAttribute()和 getParameter()之间的基本区别是返回类型。
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)