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