`
王牌海盗
  • 浏览: 239178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]http请求中Parameter(参数) 和Attribute(属性)的区别

阅读更多

HttpServletRequest类既有getAttribute()方法,也由getParameter()方法,这两个方法有以下区别:

(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法

(2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数,例如假定welcome.jsp和authenticate.jsp之间为链接关系,welcome.jsp中有以下代码:

  1. <a href="authenticate.jsp username=weiqin">authenticate.jsp a>  
html 代码

或者:

  1. <form name="form1" method="post" action="authenticate.jsp">  
  2.   
  3. 请输入用户姓名:<input type="text" name="username"><input type="submit" name="Submit" value="提交">form>  
  4.   
  5. 在authenticate.jsp中通过request.getParameter("username")方法来获得请求参数username:<% String username=request.getParameter("username"); %>  
html 代码

 

在authenticate.jsp中通过request.getParameter("username")方法来获得请求参数username:<!---->

(3)当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。假定authenticate.jsp和hello.jsp之间为转发关系。authenticate.jsp希望向hello.jsp传递当前的用户名字,如何传递这一数据呢?先在authenticate.jsp中调用setAttribute()方法:
<!----><jsp:forward page="hello.jsp"></jsp:forward>在hello.jsp中通过getAttribute()方法获得用户名字:<!---->Hello: <!---->

(4)从更深的层次考虑,request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。

request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。

getParameter得到的都是String类型的。或者是http://a.jsp id=123中的123,或者是某个表单提交过去的数据。
getAttribute则可以是对象。
getParameter()是获取POST/GET传递的参数值;
getAttribute()是获取对象容器中的数据值;
getParameter:用于客户端重定向时,即点击了链接或提交按扭时传值用,即用于在用表单或url重定向传值时接收数据用。
getAttribute:用于服务器端重定向时,即在sevlet中使用了forward函数,或struts中使用了mapping.findForward。getAttribute只能收到程序用setAttribute传过来的值。
另外,可以用setAttribute,getAttribute发送接收对象.而getParameter显然只能传字符串。
setAttribute是应用服务器把这个对象放在该页面所对应的一块内存中去,当你的页面服务器重定向到另一个页面时,应用服务器会把这块内存拷贝另一个页面所对应的内存中。这样getAttribute就能取得你所设下的值,当然这种方法可以传对象。session也一样,只是对象在内存中的生命周期不一样而已。
getParameter只是应用服务器在分析你送上来的request页面的文本时,取得你设在表单或url重定向时的值。

分享到:
评论

相关推荐

    springcloud 中 zuul 修改请求参数信息的方法

    Zuul 中修改请求参数信息的方法 在 Spring Cloud 中, Zuul 是一个基于 JVM 的路由和服务端的负载均衡器,提供了认证、压力测试、金丝雀测试、动态路由、负载削减、安全、静态响应处理、主动/主动交换管理等功能。 ...

    高德获取servlet传递参数并显示.zip_chartlgy_servlet_高德_高德地图

    Servlet是Java编程语言中用来扩展服务器功能的接口,它允许开发者创建能够处理HTTP请求和生成响应的Java类。在我们的场景中,Servlet接收来自客户端(如浏览器)的请求,处理数据,并将结果传递给JSP页面。 在...

    Struts1配置

    10. `parameter`: 用于指定特定的请求参数,这个参数将会被传递给Action类。 11. `validate`: 如果设置为`true`,ActionForm的验证将在`execute()`方法之前进行。验证失败会导致返回`input`属性指定的页面。 每个`...

    JavaWeb开发技术-JSP动作元素.pptx

    - `name` 是Bean的引用,`property` 是要设置的属性,`value` 直接指定值,`param` 从请求参数中获取值。 - `jsp:getProperty` 则用于输出JavaBean的属性值,例如: ```xml ``` 4. **jsp:forward**: - `jsp...

    ECMA340/ISO18092

    文档提到了“Attribute Request and Response Commands”(属性请求和响应命令),“Wakeup Request and Response Commands”(唤醒请求和响应命令)以及“Parameter Selection Request and Response Commands”...

    框架基础知识(structs,hibernate,spring)

    配置Action时,需要指定Path、Type、Name、Scope、Validate、Input、Attribute、Parameter、Forward、Include等属性,这些属性定义了Action的行为和响应方式。 Hibernate是一个持久化框架,它简化了数据库操作,将...

    Windows6.1-KB947821-v27-x86.part1

    0x80070057 ERROR_INVALID_PARAMETER 参数不正确。 0x800B0100 TRUST_E_NOSIGNATURE 主题中没有签名。 0x80092003 CRYPT_E_FILE_ERROR Windows Update 读取或写入某文件时出现错误。 0x800B0101 CERT_E_...

    Windows6.1-KB947821-v27-x86.part2

    0x80070057 ERROR_INVALID_PARAMETER 参数不正确。 0x800B0100 TRUST_E_NOSIGNATURE 主题中没有签名。 0x80092003 CRYPT_E_FILE_ERROR Windows Update 读取或写入某文件时出现错误。 0x800B0101 CERT_E_...

    java常用单词

    获取参数是指从HTTP请求中提取用户提交的数据。 #### 会话 (Session) 会话是指用户与服务器之间的一系列交互。 #### 应用程序 (Application) 应用程序是指用于执行特定任务的计算机程序。 #### 上下文 (Context) ...

    mq全错误号查询大全

    这通常发生在同一请求中重复提供相同的参数。 19. **3028 - Structure length not valid** - 结构长度无效。与上文提到的相同。 20. **3047 - Parameter identifier is not valid** - 参数标识符无效。这通常是...

    Struts高级部分(2)(常用Action、验证框架、动态Form)笔记

    通过在struts-config.xml中设置parameter属性,我们可以指定用于区分不同操作的参数。 接下来,我们讨论动态ActionForm——**DynaActionForm**。DynaActionForm允许我们在运行时动态定义表单字段,这极大地减少了...

    英文编程英语.txt

    - **客户端(Client)**:在客户端-服务器模型中,客户端是指发起请求和服务的终端。客户端通常通过网络连接到服务器获取所需的服务或数据。 ### 50. 控件 (Control) - **控件(Control)**:在用户界面中,控件是指...

    ZigBee协议网络层(中文详解)

    - 描述:`NLME-LEAVE.request` 原语失败,因为产生原语的设备地址不在邻居表中的参数列表中。 - 解析:尝试让未知设备离开网络时返回此状态。这通常意味着请求的设备从未加入过网络。 10. **UNSUPPORTED_...

    计算机编程常用英语单词.doc

    参数是函数定义中声明的形式参数,而引数则是调用函数时传递的实际值。 #### Array (阵列) - **中文解释**: 数组 - **应用场景**: 一种基本的数据结构,用于存储相同类型的多个元素。数组中的每个元素可以通过索引...

    struts高级日记

    通过设置请求路径、参数等信息,并调用相应的测试方法来验证 Action 的处理结果是否符合预期。 ### Struts 中的 Token 使用 Struts 支持使用 Token 来防止重复提交表单数据。在页面中可以通过 `...

    SpringMVC实现controller中获取session的实例代码

    在SpringMVC中,Controller是处理HTTP请求的核心组件,它负责接收请求并返回响应。在某些业务场景下,我们可能需要在Controller方法中访问用户的Session,以存储或读取一些会话级的数据。传统的做法是直接使用...

    ZigBee协议网络层

    网络层状态值是网络层确认原语中的一个参数,记录回答请求原语的状态。下面是网络层状态参数值的详细介绍: 1. SUCCESS(0x00):请求执行成功 2. INVALID_PARAMETER(0xc1):从高层发出的原语无效或者超出范围 3....

    软件工程术语表

    在面向对象编程中,属性通常是类中的变量,可以通过访问器方法进行读取和修改。 #### 基类(Base Class) 基类是在类继承结构中位于顶部的类,它可以被其他类继承。基类提供了子类共享的属性和方法,有助于减少代码...

Global site tag (gtag.js) - Google Analytics