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的声明周期(一次链接),使用范围,属性有哪些应用