一:jsp基本语法-内置对象四种应用范围
主要讲解一下:内置对象简介和四种属性范围即
内置对象简介、pageContext范围、request范围、session范围、application范围
首先认识一下: 九个内置对象
NO.
|
内置对象
|
类型
|
1
|
pageContext
|
javax.servlet.PageContext
|
2
|
request
|
javax.servlet.http.HttpServletRequest
|
3
|
response
|
javax.servlet.http.HttpServletResponse
|
4
|
session
|
javax.servlet.http.HttpSession
|
5
|
application
|
javax.servlet.ServletContext
|
6
|
config
|
javax.servlet.ServletConfig
|
7
|
out
|
javax.servlet.jsp.JspWriter
|
8
|
page
|
java.lang.Object
|
9
|
exception
|
java.lang.Throwable
|
2.
四种属性范围
四种属性范围现在只能了解其概念,而具体的应用,要结合后面的开发模式才能有所了解。所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围。
当前页:一个属性只能在一个页面中取得,跳转到其他的页面无法取得。
一次服务器请求范围:一个页面中设置的属性,只要经过服务器跳转,则跳转之后的页面可以继续使用
一次会话:一个用户设置的内容,只要是与此用户相关的页面都可以访问
上下文中:在整个服务器中设置的属性,所 有人都可以访问。
顺便说一下
属性的操作方法
四种属性范围中都将包含以下的属性操作方法。
No.
|
方法
|
描述
|
1
|
public void setAttribute(String name,Object value)
|
设置属性
|
2
|
public Object getAttribute(String name)
|
取得属性
|
3
|
public void removeAttribute(String name)
|
删除属性
|
二:内置对象和四种属性的详解加实例
1。page属性范围(pageContext)
在一个页面设置的属性,跳转到其他的页面就无法访问了。
但是在使用page属性范文的时候必须注意的是:虽然习惯上将页面范围的属性称为page范围,但是实际上操作的时候是使用pageContext内置对象完成的。
pageContext从字面上的定义,可以发现,是表示一个页面的上下文,可以表示一个页面中的所有内容。
范例:
pageScopeDemo01.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>
pageScopeDemo02.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
// 此时设置的属性只能够在本页中取得
pageContext.setAttribute("name",“COMPUTER") ; // 设置属性
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>
如果现在希望跳转到其他页面之中,依然可以取得,则可以扩大属性范围,使用request属性范围即可。
2。接着讲解:request属性范围
request属性范围表示在一次服务器跳转中有效,只要是服务器跳转,则设置的request属性可以一直传递下去。
范例:
3。 session范围
RequestScopeDemo01.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.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>
但是如果此时新开一个浏览器,则肯定无法取得。Session只是保留了一个人的信息。如果一个属性想让所有的用户都可以访问,则可以使用最后一种属性范围:application范围
4。
application属性范围
Application属性范围是在服务器上设置的一个属性,所以一旦设置之后任何用户都可以浏览到此属性。
范例:
ApplicationScopeDemo01.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
// 此时设置的属性任何用户都可以取得
application.setAttribute("name","MLDN") ; // 设置属性
application.setAttribute("date",new Date()) ; // 设置属性
%>
<h2><a href="ApplicationScopeDemo03.jsp">ApplicationScopeDemo03</a></h2>
ApplicationScopeDemo02.jsp
<%@page contentType="text/html;charset=GBK"%>
<%@page import="java.util.*"%>
<%
// 取得设置的属性
String refName = (String)application.getAttribute("name") ;
Date refDate = (Date)application.getAttribute("date") ;
%>
<h2>姓名:<%=refName%></h2>
<h2>日期:<%=refDate%></h2>
因为属性范围设置在了服务器中,所以只要是连接到此服务器的任意用户都可以取得此属性,当然,如果服务器关闭的话,则此属性肯定消失。
转接六:tomcat Javaweb开发基础(6)request内置对象的详解