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

pri*_*iya 271 java jsp servlets

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

Boz*_*zho 314

  • getParameter()返回http请求参数.那些从客户端传递到服务器.例如http://example.com/servlet?parameter=1.只能退货String

  • getAttribute()仅供服务器端使用 - 您使用可在同一请求中使用的属性填充请求.例如 - 您在servlet中设置一个属性,并从JSP中读取它.可用于任何对象,而不仅仅是字符串.

  • 我想当你在jsp页面中使用类似`$ {attrName}`的东西时,那些是你使用`request.getSession().setAttribute()`设置的属性? (3认同)

kro*_*ock 44

通常,参数是最常见的从客户端发送到服务器(例如表单帖子)并从servlet请求中检索的字符串值.令人沮丧的例外是ServletContext初始参数,这些参数是在web.xml中配置并存在于服务器上的字符串参数.

属性是存在于指定范围内的服务器变量,即:

  • application,可用于整个应用程序的生命周期
  • session,可用于会话的生命周期
  • request,仅适用于请求的有效期
  • page (仅限JSP),仅适用于当前JSP页面


AVI*_*AVI 34

用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"/>
Run Code Online (Sandbox Code Playgroud)

和second.jsp:

<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>
Run Code Online (Sandbox Code Playgroud)

在浏览器中,运行first.jsp?CLIENT = you,浏览器输出为

From Which Page : *first.jsp*
Data From Client : you
Run Code Online (Sandbox Code Playgroud)

getAttribute()和之间的基本区别getParameter()是第一种方法提取(序列化的)Java对象,另一种方法提供String值.对于这两种情况,都会给出一个名称,以便可以查找和提取其值(字符串或java bean).

  • 这是一个很好的例子.这应该是公认的答案.接受的答案是正确的,但对于新来者,一个例子澄清了一切.谢谢. (4认同)

one*_*ros 26

知道属性不是参数至关重要.

属性的返回类型是Object,而参数的返回类型是String.调用getAttribute(String name)方法时,请记住必须强制转换属性.

此外,没有特定于servlet的属性,也没有会话参数.

本文的目的是为了连接@ Bozho的回复,作为对其他人有用的附加信息.


小智 9

getAttribute和getParameter之间的区别在于getParameter将返回由HTML表单提交的参数值或包含在查询字符串中的参数值.getAttribute返回您在请求中设置的对象,您可以使用它的唯一方法是与RequestDispatcher一起使用.您使用RequestDispatcher将请求转发到另一个资源(JSP/Servlet).因此,在转发请求之前,您可以设置一个可供下一个资源使用的属性.


Ree*_*ika 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>
Run Code Online (Sandbox Code Playgroud)

request.getParameter("testParam")将从名为"testParam"的输入框的已发布表单中获取值,即"客户端参数".然后它会打印出来,所以你应该在屏幕上看到"Client Param".因此request.getParameter()将检索客户端已提交的值.您将获得服务器端的值.

- getAttribute():, request.getAttribute()这都是服务器端完成的.您将该属性添加到请求中,并且您将请求提交给另一个资源,客户端不知道这一点.所以处理它的所有代码通常都在servlets.getAttribute中,总是返回对象.