文档章节

参数(parameter)和属性(Attribute)的区别

J
 JackMo2015
发布于 2016/12/07 17:50
字数 1073
阅读 22
收藏 0
点赞 0
评论 0

在JAVA WEB开发中经常遇到获取请求参数的值和在request对象中set或者get属性,初学者往往容易混淆,那么二者之间关系到底如何呢?下面是个人的总结: 
区别: 

  • 来源不同:
  •    参数(parameter)是从客户端(浏览器)中由用户提供的,若是GET方法是从URL中 
    提供的,若是POST方法是从请求体(request body)中提供的; 
      属性(attribute)是服务器端的组件(JSP或者Servlet)利用requst.setAttribute()设置的
  • 操作不同:
  •    参数(parameter)的值只能读取不能修改,读取可以使用request.getParameter()读取; 
      属性(attribute)的值既可以读取亦可以修改,读取可以使用request.getAttribute(),设置可使用request.setAttribute()
  • 数据类型不同:
  •    参数(parameter)不管前台传来的值语义是什么,在服务器获取时都以String类型看待,并且客户端的参数值只能是简单类型的值,不能是复杂类型,比如一个对象。 
       属性(attribute)的值可以是任意一个Object类型。 

共同点 
二者的值都被封装在request对象中。 

=============================================================

getParameter 是用来接受用post个get方法传递过来的参数的.
getAttribute 必须先setAttribute.
(1)request.getParameter() 取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和getAttribute()只是在web容器内部流转,仅仅是请求处理阶段。
(2)request.getParameter() 方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。
request.setAttribute() 和 getAttribute() 方法传递的数据只会存在于Web容器内部
还有一点就是,HttpServletRequest 类有 setAttribute() 方法,而没有setParameter() 方法。
拿一个例子来说一下吧,假如两个WEB页面间为链接关系时,就是说要从1.jsp链接到2.jsp时,被链接的是2.jsp可以通过getParameter()方法来获得请求参数.
假如1.jsp里有

Html代码  

  1. <form name="form1" method="post" action="2.jsp">  
  2. 请输入用户姓名:<input type="text" name="username">  
  3. <input type="submit" name="Submit" value="提交">  
  4. </form>  

的话在2.jsp中通过request.getParameter("username")方法来获得请求参数username:

Html代码  

  1. < % String username=request.getParameter("username"); %>  

但是如果两个WEB间为转发关系时,转发目的WEB可以用getAttribute()方法来和转发源WEB共享request范围内的数据,也还是说一个例子吧。
有1.jsp和2.jsp
1.jsp希望向2.jsp传递当前的用户名字,如何传递这一数据呢?先在1.jsp中调用如下setAttribute()方法:

Html代码  

  1. <%  
  2. String username=request.getParameter("username");  
  3. request.setAttribute("username",username);  
  4. %>  
  5.   
  6. <jsp:forward page="2.jsp" />  

在2.jsp中通过getAttribute()方法获得用户名字:

Html代码  

  1. <% String username=(String)request.getAttribute("username"); %>  

(1)HttpServletRequest 类有setAttribute()方法,而没有setParameter()方法
(2) 当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数,
(3) 当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。
一般通过表单和链接传递的参数使用getParameter
通过request.setAttribute("name","jerry")的方式赋值的使用request.getAttribute("name")
这个问题主要是request和session的差别,request范围较小一些,只是一个请求,简单说就是你在页面上的一个操作, request.getParameter()就是从上一个页面中的url、form中获取参数,但如果一个request涉及多个类,后面还要取参数, 可以用request.setAttribute()和request.getAttribute(),但是当结果输出之后,request就结束了。
而session可以跨越很多页面,可以理解是客户端同一个IE窗口发出的多个请求。这之间都可以传递参数,比如很多网站的用户登录都用到了。
一般可以用getParameter得到页面参数。。。字符串。。。
getAttribute()可以得到对象。。。
getParameter可以得到页面传来的参数如?id=123之类的。
getAttribute()常用于servlet页面传递参数给jsp

总的来说:request.getAttribute()方法返 回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。getAttribute是返回 对象,getParameter返回字符串

本文转载自:http://xiebh.iteye.com/blog/1006324

共有 人打赏支持
J
粉丝 3
博文 125
码字总数 39389
作品 0
广州
高级程序员
怎样用js取得/设置表格的所有属性?

我看到有人用setAttrib()函数,具体怎么用? 怎么取得/设置所选表格的所有属性 setAttribute版本:DOM1 返回值:无 语法: object . setAttribute ( sName , vValue , iFlags ) 参数: sNam...

晨曦之光
2012/03/09
0
0
log_archive_dest_n参数解释

在dataguard的配置当中,LOGARCHIVEDEST_n参数的配置比较重要,故做下整理 以下是reference中的截图 The LOGARCHIVEDEST_n initializationparameter defines up to 31 (where n = 1, 2, 3, ...

sugar黑黑
2015/10/12
0
0
关于C# 中的Attribute 特性

关于C# 中的Attribute 特性 作者: 钢钢 来源: 博客园 发布时间: 2011-01-09 23:30 阅读: 13439 次 推荐: 12 原文链接 [收藏] 摘要:纠结地说,这应该算是一篇关于Attribute 的笔记,其中的一...

随智阔
2013/12/21
0
0
[@Controller]4 详解@ModelAttribute

A、@ModelAttribute Annotation that binds a method parameter or method return value to a named model attribute, exposed to a web view. Supported for RequestMapping annotated han......

Edens_Song
2012/11/14
0
0
struts1配置文件中action的常用属性

首先列举action的属性代码如下: <action path="URL" type="ActionClass" name="userForm" scope="request" attribute="key" input="/register.jsp" forward="/index.jsp" include="/index.j......

李永china
2016/10/24
52
0
Attribute在.net编程中的应用

作者:niwalker 出处:csdn 用于参数的Attribute 在编写多层应用程序的时候,你是否为每次要写大量类似的数据访问代码而感到枯燥无味?比如我们需要编写调用存储过程的代码,或者编写T_SQL代...

晨曦之光
2012/03/09
123
0
浅析C#中的Attribute

最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了。 一.什么是Attribute 先看下面的三段代码: 1.自定义Attribute类:VersionAttribute [AttributeUsage(AttributeTargets.C...

Contac
2016/12/20
16
0
基于Visual Studio2010讲解C#4.0语法(3)--C#4.0中特性(Attributes)的使用方法

Attributes是一种新的描述信息,我们既可以使用attributes来定义设计期信息(例如 帮助文件,文档的URL),还可以用attributes定义运行时信息(例如,使XML中的元素与类的成员字段关联起来)...

junwong
2012/03/09
0
0
struts action标签的各种属性及其说明

attribute: 这个属性用来指定ActionForm保存到指定上下文时所使用的属性名。如果不指定attribute属性的值,将使用name属性的值作为保存时的属 性名。也就是说,attribute属性的默认值就是nam...

iTeacher
2012/01/13
0
0
class文件格式中的属性信息

附加属性(Attributes)被用于ClassFile, fieldinfo, methodinfo,Code_attribute结构中。 数据结构: aadfadfadfadfadf 属性 class版本 Java SE版本 位置 类型 作用 说明 ConstantValue 45...

秋雨霏霏
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

前端基础

1. get请求传参长度的误区 误区:我们经常说get请求参数的大小存在限制,而post请求的参数大小是无限制的。 实际上HTTP 协议从未规定 GET/POST 的请求长度限制是多少。对get请求参数的限制是...

wenxingjun
13分钟前
0
0
Android 复制和粘贴功能

做了一回搬运工,原文地址:https://blog.csdn.net/kennethyo/article/details/76602765 Android 复制和粘贴功能,需要调用系统服务ClipboardManager来实现。 ClipboardManager mClipboardM...

她叫我小渝
今天
0
0
拦截SQLSERVER的SSL加密通道替换传输过程中的用户名密码实现运维审计(一)

工作准备 •一台SQLSERVER 2005/SQLSERVER 2008服务 •SQLSERVER jdbc驱动程序 •Java开发环境eclipse + jdk1.8 •java反编译工具JD-Core 反编译JDBC分析SQLSERVER客户端与服务器通信原理 SQ...

紅顏為君笑
今天
6
0
jQuery零基础入门——(六)修改DOM结构

《jQuery零基础入门》系列博文是在廖雪峰老师的博文基础上,可能补充了个人的理解和日常遇到的点,用我的理解表述出来,主干出处来自廖雪峰老师的技术分享。 在《零基础入门JavaScript》的时...

JandenMa
今天
0
0
linux mint 1.9 qq 安装

转: https://www.jianshu.com/p/cdc3d03c144d 1. 下载 qq 轻聊版,可在百度搜索后下载 QQ7.9Light.exe 2. 去wine的官网(https://wiki.winehq.org/Ubuntu) 安装 wine . 提醒网页可以切换成中...

Canaan_
今天
0
0
PHP后台运行命令并管理运行程序

php后台运行命令并管理后台运行程序 class ProcessModel{ private $pid; private $command; private $resultToFile = ''; public function __construct($cl=false){......

colin_86
今天
1
0
数据结构与算法4

在此程序中,HighArray类中的find()方法用数据项的值作为参数传递,它的返回值决定是否找到此数据项。 insert()方法向数组下一个空位置放置一个新的数据项。一个名为nElems的字段跟踪记录着...

沉迷于编程的小菜菜
今天
1
1
fiddler安装和基本使用以及代理设置

项目需求 由于开发过程中客户端和服务器数据交互非常频繁,有时候服务端需要知道客户端调用接口传了哪些参数过来,这个时候就需要一个工具可以监听这些接口请求参数,已经接口的响应的数据,这种...

银装素裹
今天
0
0
Python分析《我不是药神》豆瓣评论

读取 Mongo 中的短评数据,进行中文分词 对分词结果取 Top50 生成词云 生成词云效果 看来网上关于 我不是药神 vs 达拉斯 的争论很热啊。关于词频统计就这些,代码中也会完成一些其它的分析任...

猫咪编程
今天
0
0
虚拟机怎么安装vmware tools

https://blog.csdn.net/tjcwt2011/article/details/72638977

AndyZhouX
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部