JSP中四种属性范围(pageContext,request)
2016-02-20 00:00
726 查看
摘要: pageContext,request,session,application
在JSP中提供了四种属性的保存范围,所谓的属性的保存范围,指的是一个设置的对象,可以在多少个页面中保存,并可以使用。
四种属性范围:
①pageContext:只在一个页面中保存属性,跳转后无效;
②request:只在一次请求中保存属性,服务器跳转后依然有效;
③session:在一次会话范围中,无论如何跳转都有效,但新开浏览器则无效;
④application:在整个服务器上保存,所有用户都可以使用。
属性操作方法
四个内置对象都存在以上三个方法。
设置属性的时候,属性的名称是String,内容是Object。Object可以设置任意内容
一,page范围(pageContext范围)---->表示将一个属性设置在页面上,跳转后无法取得
通过<jsp:forward>跳转,则跳转之后属性无法取得
现在发现服务器跳转之后,发现内容取得,则一个page范围中的内容只能在一个页面内保存。
如果希望服务器跳转之后可以继续取得属性,则使用更大范围的跳转---->request跳转
二,request属性范围
如果要在服务器跳转之后,属性还可以保存下来,则使用request属性范围操作。request属性范围表示,在服务器跳转之后,所有设置的内容依然可以保存下来。
request_scope_01.jsp
request_scope_02.jsp
如果跳转换成超链接跳转,则无法取得属性,因为超链接跳转后,地址栏信息改变,属于客户端跳转而不是服务器跳转。是无法取得属性的。
在JSP中提供了四种属性的保存范围,所谓的属性的保存范围,指的是一个设置的对象,可以在多少个页面中保存,并可以使用。
四种属性范围:
①pageContext:只在一个页面中保存属性,跳转后无效;
②request:只在一次请求中保存属性,服务器跳转后依然有效;
③session:在一次会话范围中,无论如何跳转都有效,但新开浏览器则无效;
④application:在整个服务器上保存,所有用户都可以使用。
属性操作方法
NO | 方法 | 类型 | 描述 |
1 | public void setAttribute(String name,Object value) | 普通 | 设置属性的名称和内容 |
2 | public Object getAttribute(String name) | 普通 | 根据属性名称取得内容 |
3 | public removeAttribute(String name) | 普通 | 删除指定的属性 |
设置属性的时候,属性的名称是String,内容是Object。Object可以设置任意内容
一,page范围(pageContext范围)---->表示将一个属性设置在页面上,跳转后无法取得
<body> <% //设置page属性范围,此范围只能在本页面起作用 pageContext.setAttribute("name","IronMan") ; pageContext.setAttribute("birthday",new Date()) ; %> <% //从page属性中取得内容,并执行向下转型,因为取得后返回的类型是Object,所以必须向下转型操作 String username = (String) pageContext.getAttribute("name") ; //向下转型,把父类对象当做子类对象,子类有而父类不一定有 Date userbirthday = (Date) pageContext.getAttribute("birthday") ; %> <h2>姓名:<%=username %></h2> <h2>年龄:<%=userbirthday %></h2> </body>
通过<jsp:forward>跳转,则跳转之后属性无法取得
<body> <% //设置page范围,此属性只能在JSP页面中起作用 pageContext.setAttribute("name","IronMan") ; pageContext.setAttribute("birthday",new Date()) ; %> <jsp:forward page="page_scope_03"></jsp:forward> <%--服务器端跳转--%> </body>
<body> <% //从page范围中取得属性,因为返回的类型是Object,所以要执行向下转型 String username = (String)pageContext.getAttribute("name") ; Date userbirthday = (Date)pageContext.getAttribute("birtyday") ; %> <h2><%=username %></h2> <h2><%=userbirthday %></h2> </body>
现在发现服务器跳转之后,发现内容取得,则一个page范围中的内容只能在一个页面内保存。
如果希望服务器跳转之后可以继续取得属性,则使用更大范围的跳转---->request跳转
二,request属性范围
如果要在服务器跳转之后,属性还可以保存下来,则使用request属性范围操作。request属性范围表示,在服务器跳转之后,所有设置的内容依然可以保存下来。
request_scope_01.jsp
<body> <% request.setAttribute("name","IronMan") ; request.setAttribute("birthday",new Date()) ; %> <jsp:forward page="request_scope_02.jsp"></jsp:forward> </body>
request_scope_02.jsp
<body> <% String username = (String) request.getAttribute("name") ; Date userbirthday = (Date) request.getAttribute("birthday") ; %> <h2>姓名:<%=username %></h2> <h2>生日:<%=userbirthday %></h2> </body>
如果跳转换成超链接跳转,则无法取得属性,因为超链接跳转后,地址栏信息改变,属于客户端跳转而不是服务器跳转。是无法取得属性的。
<body> <% // 设置request的属性范围,此属性只能在服务器跳转中有作用 request.setAttribute("name","SuperMan") ; request.setAttribute("birthday",new Date()) ; %> <!-- 使用超链接跳转,地址栏改变,属于客户端跳转,而不是服务器跳转,所以不能取得属性 --> <a href = "request_scope_02.jsp">通过超链接取得属性</a> </body>
相关文章推荐
- 非UI线程在休眠与不休眠情况下更新UI的原理分析
- 简单的UIPickView功能
- poj 1019 Number Sequence 找规律 思维题 ()
- Android Wear 进阶 - 3 Creating Custom UIs for Wear Devices 创建自定义的手表设备UIs
- Light OJ 1421 Wavio Sequence (简单DP)
- Hdu 2604 Queuing【矩阵快速幂】
- 【POJ】2031 - Building a Space Station(克鲁斯塔尔)
- [Introduction to programming in Java 笔记] 1.3.8 Gambler's ruin simulation 赌徒破产模拟
- iOS 【UIKit-iOS常用控件尺寸大集合 】
- iOS开发-数据选择UIPickerView(案例三)
- iOS开发-数据选择UIPickerView(案例二)
- iOS开发-数据选择UIPickerView(案例一)
- 诺看看图王 (基于DUI SOUI 库开发而成)
- iOS-UI-基本控件之UIView
- 【SPOJ-GSS6】Can you answer these queries VI【Splay】
- UI整理-----part3--UITableView
- EasyUI系列学习(八)-ProgressBar(进度条)
- 【Lintcode】Building Outline
- HDU 4908 BestCoder Sequence
- Easyui-datagrid显示时间的格式化代码