Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getAttribute()和getParameter()之间的差异_Java_Jsp_Servlets - Fatal编程技术网

Java getAttribute()和getParameter()之间的差异

Java getAttribute()和getParameter()之间的差异,java,jsp,servlets,Java,Jsp,Servlets,HttpServletRequest类中的getAttribute和getParameter方法之间有什么区别 getParameter返回http请求参数。从客户机传递到服务器的数据。例如http://example.com/servlet?parameter=1. 只能返回字符串 getAttribute仅用于服务器端-您可以使用可以在同一请求中使用的属性填充请求。例如,您在servlet中设置了一个属性,并从JSP读取它。可以用于任何对象,而不仅仅是字符串 通常,参数是一个字符串值,最常见

HttpServletRequest类中的getAttribute和getParameter方法之间有什么区别

getParameter返回http请求参数。从客户机传递到服务器的数据。例如http://example.com/servlet?parameter=1. 只能返回字符串

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


通常,参数是一个字符串值,最常见的是从客户端发送到服务器(例如,表单post)并从服务器检索。令人沮丧的例外是,这是在web.xml中配置并存在于服务器上的字符串参数

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

应用程序,在整个应用程序的生命周期内可用 会话,在会话期间可用 请求,仅在请求有效期内可用 仅页面JSP,仅适用于当前JSP页面
关键是要知道属性不是参数

属性的返回类型是对象,而参数的返回类型是字符串。调用getAttributeString名称方法时,请记住必须强制转换属性

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


这篇文章的目的是连接@Bozho的回复,作为对其他人有用的附加信息

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

getParameter-用于从客户端的HTML页面获取所需的信息

getAttribute—用于获取以前在另一个或同一个JSP或Servlet页面中设置的参数

基本上,如果您正在从一个jsp/servlet转发或只是从一个jsp/servlet转到另一个jsp/servlet,则无法获得所需的信息,除非您选择将它们放在对象中并使用set属性存储在会话变量中

使用getAttribute,可以检索会话变量。

-getParameter:

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

-getAttribute: request.getAttribute,这一切都在服务器端完成。将属性添加到请求中,然后将请求提交给另一个资源,客户端不知道这一点。因此,所有处理此问题的代码通常都在servlets.getAttribute始终返回对象中。

getAttribute和getParameter之间的基本区别是返回类型

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)
request.getParameter

我们使用request.getParameter提取请求参数,即通过发布html表单发送的数据。request.getParameter始终返回字符串值,数据来自客户端

request.getAttribute

我们使用request.getAttribute获取添加到服务器端请求范围的对象,即使用request.setAttribute。您可以在这里添加任何类型的对象,字符串、自定义对象,实际上是任何对象。您将属性添加到请求并将请求转发到另一个资源,但客户端不知道这一点。因此,所有处理此问题的代码通常都在JSP/servlet中。您可以使用request.setAttribute添加额外信息,并将当前请求转发/重定向到其他资源

例如,首先考虑JSP,

//First Page : first.jsp
<%@ page import="java.util.*" import="java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>
getAttribute和getParameter之间的基本区别在于,第一个方法提取序列化Java对象,另一个方法提供字符串值。对于这两种情况,都会给出一个名称,以便可以查找和提取其值,即字符串或java bean

参数是从客户端发送到服务器的名称/值对 -通常,从HTML表单。参数只能有字符串值。有时,例如,使用GET请求,您将看到这些 在?之后直接编码到URL中,每个 名称=值,每对由&分隔。其他时候,他们是 使用POST等方法时,包含在请求正文中

属性是服务器本地sto 愤怒机制-没有存储在 作用域属性始终在服务器外部传输,除非 明确地做到这一点。属性具有字符串名称,但存储 对象值。请注意,属性是特定于它们存储的Java的 Java对象,而参数是独立于平台的 仅由通用字节组成的格式化字符串

总共有四个属性范围:JSP页面和标记 仅文件,请求仅限于当前客户端的请求, 请求完成后销毁,会话存储在 客户端会话,在会话终止后无效, 存在应用程序,以便在整个过程中访问所有组件 应用程序的部署生命周期

底线是:从数据库获取数据时使用参数 客户端,在服务器上存储对象时使用作用域属性 仅在应用程序内部使用


应使用.getParameter的另一种情况是在jsp中使用参数进行转发时:

<jsp:forward page="destination.jsp">
    <jsp:param name="userName" value="hamid"/>
</jsp:forward>

在哪个类/包/API中?您是否尝试阅读JavaDocs中的相关方法?Related:attribute仅用于帮助servlet协同工作的http请求我想当您在jsp页面中使用类似${attrName}的内容时,这些是您使用request.getSession.setAttribute设置的属性?因为请求属性存储在服务器端,我可以为服务器间post重定向get请求设置请求属性吗?我想通过重定向请求中的一个属性将信息从一台服务器发送到JSF中的另一台服务器。目前,我可以通过POST请求发送。在这种情况下,参数似乎与查询字符串同义。对此您不太了解。通常,参数是字符串值,而不是字符串。我们可以发送什么?^对象,如请求。SetAttribute这是一个很好的示例。这应该是公认的答案。公认的答案是正确的,但对于新手来说,一个例子说明了一切。谢谢,回答得很好。当您截获客户机的请求服务器端并向请求附加一些附加信息时,属性的作用域可能值得添加。
<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>
From Which Page : *first.jsp*
Data From Client : you
<jsp:forward page="destination.jsp">
    <jsp:param name="userName" value="hamid"/>
</jsp:forward>
request.getParameter("userName")