JSP内置对象和四种属性

一、 认识JSP9种内置对象

一般对象需要实例化才可以调用,而JSP的内置对象是不用实例化就可以直接调用的对象。一个9个,要记住前6个及其对应的类型。如下表:

NO

JSP内置对象

对应的Java类型

1

pageContxt

javax.servlet.jsp.PageContext

2

request

javax.servlet.http.HttpServletRequest

3

session

javax.servlet.http.HttpSession

4

application

java.servlet.ServletContext

5

response

java.servlet.http.HttpServletReponse

6

config

javax.servlet.ServletConfig

7

out

javax.servlet.jsp.JspWriter

8

page

javax.lang.Object

9

exception

java.lang.Throwable

二、 四种属性范围

提示:所谓的属性范围就是一个属性设置之后,可以经过多少个页面后还可以访问的保存范围。四种属性范围分别指的是以下的四种:

·当前页(pageContext):一个属性只能在一个页面的取得,跳到其他页面无法取得。

·一次服务器请求范围(request):一个页面中设置的属性,只要经过了几次服务器跳转(forward),则跳转之后的页面还是可以取得

·一次会话(session):一个用户设置的内容,只要是与此用户相关的页面都可以访问取得

·上下文(application):在整个服务器上设置的属性,所以人都可以访问

对四种属性的操作方法如下:

描述

方法

设置属性

public void setAttribute(String name,Object value)

获取属性

public Object getAttribute(String name)

删除属性

Public void removeAttribute(String name)

1、 page属性范围(也叫pageContext属性范围)

表示一个页面的上下文,pageContext的属性操作流程如图所示:


范例1pageScopeDemo1.jsp 在此页中设置两个属性

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 此时设置的属性只能够在本页中取得

pageContext.setAttribute("name","MLDN") ; // 设置属性

pageContext.setAttribute("date",new Date()) ; // 设置属性

%>

<%

// 取得设置的属性

String refName = (String)pageContext.getAttribute("name") ;

Date refDate = (Date)pageContext.getAttribute("date") ;

%>

<h2>姓名:<%=refName%></h2>

<h2>日期:<%=refDate%></h2>

结果:


范例2PageScopeDemo02.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 此时设置的属性只能够在本页中取得

pageContext.setAttribute("name","MLDN") ; // 设置属性

pageContext.setAttribute("date",new Date()) ; // 设置属性

%>

<jsp:forward page="PageScopeDemo03.jsp"/>

经过了服务器跳转到PageScopeDemo03.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 取得设置的属性

String refName = (String)pageContext.getAttribute("name") ;

Date refDate = (Date)pageContext.getAttribute("date") ;

%>

<h2>姓名:<%=refName%></h2>

<h2>日期:<%=refDate%></h2>



结果为null,所以pageContext属性范围不能再其他页面获取。

如果现在希望跳转到其他页面也可以获取,则可以扩大属性范围,使用request属性范围即可。

2request属性范围:

Request属性范围是指:只要是服务器跳转,则设置的request属性可以获取。


范例1requestScopeDemo01.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 此时设置的属性只能够在服务器跳转中取得

request.setAttribute("name","MLDN") ; // 设置属性

request.setAttribute("date",new Date()) ; // 设置属性

%>

<jsp:forward page="RequestScopeDemo02.jsp"/>

RequestScopeDemo02.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<jsp:forward page="RequestScopeDemo03.jsp"/>

RequestScopeDemo03.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 取得设置的属性

String refName = (String)request.getAttribute("name") ;

Date refDate = (Date)request.getAttribute("date") ;

%>

<h2>姓名:<%=refName%></h2>

<h2>日期:<%=refDate%></h2>

<h3><a href="RequestScopeDemo04.jsp">RequestDemo04</a></h3>

结果如下:


在单击RequestScopeDemo04进行超链接时 

RequestScopeDemo04.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 取得设置的属性

String refName = (String)request.getAttribute("name") ;

Date refDate = (Date)request.getAttribute("date") ;

%>

<h2>姓名:<%=refName%></h2>

<h2>日期:<%=refDate%></h2>


获取不了,因为超链接是客户端的跳转,是非服务器跳转

3、 session属性范围

不管如何跳转,都可以取得的,当然:session指针对于一个用户。


SessionScopeDemo01.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 此时设置的属性只能够在本页面相关的任何页中取得

session.setAttribute("name","MLDN") ; // 设置属性

session.setAttribute("date",new Date()) ; // 设置属性

%>

<jsp:forward page="SessionScopeDemo02.jsp"/>

SessionScopeDemo02.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 取得设置的属性

String refName = (String)session.getAttribute("name") ;

Date refDate = (Date)session.getAttribute("date") ;

%>

<h2>姓名:<%=refName%></h2>

<h2>日期:<%=refDate%></h2>

<h2><a href="SessionScopeDemo03.jsp">SessionScopeDemo03</a></h2>

SessionScopeDemo03.jsp

<%@page contentType="text/html;charset=GBK"%>

<%@page import="java.util.*"%>

<%

// 取得设置的属性

String refName = (String)session.getAttribute("name") ;

Date refDate = (Date)session.getAttribute("date") ;

%>

<h2>姓名:<%=refName%></h2>

<h2>日期:<%=refDate%></h2>

运行得:


点击SessionScopeDemo03得到


但是,此时,如果新开一个浏览器,侧坑定无法获取,session指是保留一个人的信息,如果想让所有的用户都可以访问,则使用application属性范围。

4、 application属性范围

所有用户都可以范围的属性

注意:如果服务器设置过多的application属性,则会影响到服务器的性能。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值