JSP九大内置对象总结(一)

阅读更多

JSP(Java Server Page)是当今一项非常重要的动态Web开发技术,它充分继承了Java的众多优势,包括一次编写到处运行的承诺、高效的性能以及强大的可扩展能力。

 

一、概述

JSP内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显示声明即可使用。不过,在对JSP内置对象作进一步说明之前,首先来了解一下JSP内置对象的作用范围。

 

二、内置对象作用范围(Scope)

所谓内置对象的作用范围,是指每个内置对象的某个实例在多长的时间和多大的范围内有效,也即在什么样的范围内可以有效地访问同一个对象实例。在JSP中,定义了4种作用范围,分别是:Application、Session、Page和Request,它们代表了对象各自的“生命周期”。下面分别对其做介绍说明。

(一)Application Scope

1、作用范围:起始于服务器开始运行,application对象被创建之时;终止于服务器关闭之时。

2、说明:(1)任何页面在任何时候都可以访问application scope的对象。只要服务器还在正常运行;

(2)但另一方面,由于服务器自始自终都需要在内存中保存application对象的实例,因此application对象占据的资源是巨大的,一旦application对象数量过大,服务器运行效率也会大大降低。

(二)Session Scope

1、作用范围:在客户端同服务器相连接的时间,直到其连接中断为止。每个用户请求访问服务器时一般就会创建一个session对象,待用户终止退出则该session对象消失,即用户请求访问服务器时session对象开始生效,用户断开退出时session对象失效。

session的退出分为两种:

     (1)服务器对session对象有默认的时间限定,如果超过该时间限制,session会自动失效而不管用户是否已经终止连接,这主要是出于安全性的考虑。

      (2)使用java语句主动退出。

2、说明:有一个普遍的错误理解,就是认为关闭浏览器就关闭了session。正是由于关闭浏览器并不等于关闭了session,才会出现设置session有效时间的解决方法。

(三)Request Scope

1、作用范围:用户的一次请求过程。

2、说明:通常情况下,一次请求过程在用户访问到用户指定的页面后就结束了,但某些情况下,一次请求可能涉及到多个页面。

3、实例

// index.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<%
request.setAttribute("username","july");
%>

 

// page1.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<% 
out.println("属性username的值为:"+request.getAttribute("username"));
%>
page2.jsp

 

// page2.jsp
<%@ page contentType="text/html;charset=GB2312"%>
<% 
out.println("属性username的值为:"+request.getAttribute("username"));
%>

 
JSP九大内置对象总结(一)_第1张图片
 
JSP九大内置对象总结(一)_第2张图片
 

(四)Page Scope

1、作用范围:只能够获取本页的数据。

2、说明:如果把上例中的page1.jsp和page2.jsp页面中的request对象全部替换成pageContext,然后重新执行,会发现连page2.jsp也无法读到username的属性。

 

三、JSP内置对象

(一)application对象

1、作用范围:application scope

2、说明:

(1)对于一个网站中所有的JSP页面,application对象只有一个。它们操作的是同一个application对象。

(2)注意:不要设置过多的application有效对象,造成服务器的负担。另外,不同的网站,使用不同的application对象。

3、实例:

(1)实现计数器 

application是一个全局变量,所有访问同一服务器的客户都可访问application对象。在counter.jsp中,我们应用application实现一个计数器来证明这一特点。

 

// application.jsp
<%@ page language="java" contentType="text/html;charset=GB2312"%>


网站计数器


<%
	if(application.getAttribute("count")==null){
		application.setAttribute("count","1");
		out.println("欢迎,您是第1位访客!");
	}else{
		int i = Integer.parseInt((String)application.getAttribute("count"));
		i++;
		application.setAttribute("count",String.valueOf(i));
		out.println("欢迎,您是第"+i+"位访客!");
	}
%>


 

(2)获取服务器系统相关信息

application对象负责提供应用程序在服务器中运行时的一些全局信息,因此我们可以利用application来获取一些系统相关信息。

 

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


application应用


服务器信息: <% out.println(application.getServerInfo()); %>

Java Servlet API 主版本号: <% out.println(application.getMajorVersion()); %>

Java Servlet API 次版本号: <% out.println(application.getMinorVersion()); %>

本网页的真实路径: <%out.println(application.getRealPath("index.jsp"));%>

<% String str1="系统已提供了信息"; application.log(str1); %>

*注意:

本网页已向日志文件中添加了如下信息:“ <%out.println(str1);%>”

 

 (二)config对象

1、说明:config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数及服务器的有关信息。

2、常用方法:

(1)getServletContext()方法

 (2)getInitParameter()方法

 (3)getInitParameterNames()方法

3、主要是对web.xml的数据进行读取。实际上是通过getServletContext()方法获得application对象,再根据application对象获得。

4、实例

(1)在web.xml文件中加入如下代码:


  	aa
  	/index5.jsp
  	
  		className
  		oracle.jdbc.driver.OracleDriver
  	
  	
  		url
  		jdbc:oracle:thin:@127.0.0.1:1521:ORCL
  	
  	
  		user
  		scott
  	
  		
  		pwd
  		tiger
  	
  
  
  	aa
  	/aa
  

 创建一个index5.jsp,通过config对象获取xml文件中的数据并输出


	这个是index5.jsp!

	<%
	String className = config.getInitParameter("className");
	String url = config.getInitParameter("url");
	String user = config.getInitParameter("user");
	String pwd = config.getInitParameter("pwd");
%>


<%=className %> 
<%=url %>
<%=user %>
<%=pwd %>

  

(三)exception对象

1、说明:当JSP页面发生错误时,会产生异常,而exception就是用来针对异常做出相应处理的对象,要使用该对象,必须在page命令中设定<%@ page isErrorPage="true"%>,否则编译会出现错误。

2、实例

 

// testError.jsp
<%@ page errorPage="handleError.jsp"%>
<%@ page contentType="text/html;charset=GB2312"%>


<%
      int i = 0;
      int j = 1/i;
%>


 
// handleError.jsp
<%@ page isErrorPage="true" contentType="text/html;charset=GB2312"%>


出错处理

在处理请求时发生了错误!

错误原因如下: <%= exception.getMessage() %>. // 注意:没有isErrorPage=“true” ,则exception对象不会自动生成

 

 

(四)out对象

1、作用:主要用于向浏览器端输出数据。

2、out实际上是带有缓冲特性的PrinterWriter,可以称之为JspWriter。缓冲区容量是可以设置的,甚至也可以关闭,只要通过page指令的buffer属性就可以达到此目的。 

3、JSP文件代码中的文件内容会自动生成out.print()或者out.println()输出。

4、实例

 

<%@ page contentType="text/html;charset=gbk"%>
<%
int BufferSize=out.getBufferSize();
int Available=out.getRemaining();
%>
<%
String[] str = new String[5];
str[0] = "out";
str[1] = "输出";
out.println("");
out.println("");
out.println("使用out对象输出HTML表格");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
for(int i=0;i<2;i++){
	out.println("");
	out.println("");
	out.println("");
	out.println("");
}
BufferSize=out.getBufferSize();
Available=out.getRemaining();
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("");
out.println("
BufferSize:"+BufferSize+ "
Available:"+Available+ "
数组序列数组值
str["+i+"]"+str[i]+"
BufferSize:"+BufferSize+ "
Available:"+Available+ "
"); out.println(""); out.println(""); out.close(); %>
 效果:

 

JSP九大内置对象总结(一)_第3张图片
 

(五)page对象

1、page对象指代JSP页面本身、代表了正在运行的由JSP文件产生的类对象。page对象很少在JSP中使用。

2、page对象在jsp生成的对应java文件中(转换过程后续会提到),可以用this代替。

 

关于内置对象的总结,先写这么多,之后会更新第二篇,关于request、response、pageContext和session的使用方法。

 

 谢谢您的关注和阅读,文章不当之处还请您不吝赐教~~~微笑微笑微笑

 

  • JSP九大内置对象总结(一)_第4张图片
  • 大小: 27.4 KB
  • JSP九大内置对象总结(一)_第5张图片
  • 大小: 27 KB
  • JSP九大内置对象总结(一)_第6张图片
  • 大小: 931 Bytes
  • 查看图片附件

你可能感兴趣的:(JSP,内置对象,Web编程)