getAttibute和getParameters的区别

来源:互联网 发布:方正字体 for mac 编辑:程序博客网 时间:2024/06/04 01:04

    今天在看系统代码时,发现在get参数时,有的用的getAttribute,有的用的是getParameter,然后上网搜了一下两者的区别,对于初学时不太明白的问题,现在能看的八九不离十了。

转载自http://panlianghui-126-com.iteye.com/blog/732789

    一:他们取得值不同,getAttribute获得的是对象,所以当需要的是String类型时,要进行强制类型转换。而getParameter获得的类型是Stirng.

    二:数据传递路径不同,request.getParameters方法传递的数据是从web客户端到web服务器,代表http的请求数据,用于表单或url重定向使用。而requset.getAttribute方法传递的参数只存在与web容器内部,在具有转发关系的web组件之间共享(servlet和jsp)

    三:在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的生命周期较长。


0 0
原创粉丝点击