getAttribute()和getParameter()之间的区别

时间:2011-03-09 09:33:29

标签: java jsp servlets

getAttribute()类中的getParameter()HttpServletRequest方法之间有什么区别?

10 个答案:

答案 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)