您的位置:首页 > Web前端 > JavaScript

JSP中getAttribute和getParameter的区别

2014-09-26 16:34 169 查看
request 中对属性的操作也非常重要,如果要使用 getAttribute( ) 则之前一定要有setAttribute 的操作,否则无法取得。

如果使用 getParameter ( ) 则表示接收参数,参数的来源有:

1, 表单提交

2, 地址重写

3, 通过 <jsp include>、<jsp forward> 传递而来的参数。

getParameter ( )是无法接受setAttribute 所设置的属性的。

原地址:http://panlianghui-126-com.iteye.com/blog/73278

作为web的初学者,一直被getAttribute和getParameter这两个方法给困扰着,今天在网上搜了下,很受用,有那么点感觉了,现在来理下思路。

第一,它们取到的值不同。getAttribute取到的是对象(object),而getParameter取到的是String。

第二,数据传递路劲不同。request.getParameter方法传递的数据是从web客户端传到web服务器,代表http的请求数据,用于表单或url重定向时使用。

而request.getAttribute方法传递的数据只存在于web容器内部,在具有转发关系的web组件之间共享(servlet和JSP),即在request范围内存在对象。

第三,在jsp中,setAttribute是把这个对象放到该页面所对应的一块内存中,当页面服务器转发到另一个页面时,应用服务器会把这块内存拷贝到另一块页面内存中,(这是参考http://wenku.baidu.com/view/99e0cdaedd3383c4bb4cd287.html讲的,我没测试过,但是我在servlet测试过用重定向时,在aServlet中用request.setAttribute(),在重定向到b时,用request.getAttribute取不到值,这个与第二点相符(我在测试可能用到mvc模式,在action里用request.getAttribute()接收,这相当于request被重新生成了一次,所以用request就取不到值))。

那么,既然对象是存在内存中的,用session来setAttribute就能在重定向的servlet和jsp传对象了,因为session的生命周期较长。

---------------------------------------------------------------------------------------------

原文地址:
http://blog.sina.com.cn/s/blog_531101430100lrzt.html
JSP的九大内置对象中request:

A:form表单默认提交过来的就是字符串。(非常重要)

B:学会看内存地址,例如:[java.lang.String.123456...//此内存地址为字符串数组,而非字符串。

C:request的作用域(一次链接)。

D:请求转发和重定向的不同:数据的载体。

Jsp中的request等同于Servlet中HttpServletRequest

request.getParameter("表单元素的name值"); //通过表单元素的name值,获得Value值。

request.getAttrabute("属性的名称") ; //通过属性名称获取传入的属性的Value值

request.setAttrabute("属性的名称","属性的值"); //为属性赋值,前面为属性的名称,后面为属性的值。

request.getContentPath(); //返回项目的根目录。

request.getMethod(); //获得提交方式,get/post

request.getProtocol(); //取得协议例如:HTTP 1.1

request.getQueryString(); //获得通过get方式提交过来的问号后面的值。

request.RemoveAttribute(); //清空属性。

request的声明周期(一次链接),使用范围,属性有哪些应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: