`

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");
%>
<jsp:forward page="page1.jsp"/>

 

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

 

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

 

 

 

(四)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"%>
<html>
<head>
<title>网站计数器</title>
</head>
<body>
<%
	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+"位访客!");
	}
%>
<hr />
</body>
</html> 

 

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

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

 

<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>application应用</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head>
<body>
<div align="center">
<h4 align="left">服务器信息:
  <%
  out.println(application.getServerInfo());
  %></h4>
  <h4 align="left">Java Servlet API 主版本号:
  <%
  out.println(application.getMajorVersion());
  %></h4>
  <h4 align="left">Java Servlet API 次版本号: 
    <%
  out.println(application.getMinorVersion());
  %></h4>
<h4 align="left"> 
本网页的真实路径: 
    <%out.println(application.getRealPath("index.jsp"));%>
  </h4>
 <%
     String str1="系统已提供了信息";
     application.log(str1);
 %>

  <h4 align="left">*注意: </h4>
  <p align="left">本网页已向日志文件中添加了如下信息:“ 
    <%out.println(str1);%>”</p>
</div>
</body>
</html>
 

 (二)config对象

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

2、常用方法:

(1)getServletContext()方法

 (2)getInitParameter()方法

 (3)getInitParameterNames()方法

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

4、实例

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

<servlet>
  	<servlet-name>aa</servlet-name>
  	<jsp-file>/index5.jsp</jsp-file>
  	<init-param>
  		<param-name>className</param-name>
  		<param-value>oracle.jdbc.driver.OracleDriver</param-value>
  	</init-param>
  	<init-param>
  		<param-name>url</param-name>
  		<param-value>jdbc:oracle:thin:@127.0.0.1:1521:ORCL</param-value>
  	</init-param>
  	<init-param>
  		<param-name>user</param-name>
  		<param-value>scott</param-value>
  	</init-param>
  		<init-param>
  		<param-name>pwd</param-name>
  		<param-value>tiger</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>aa</servlet-name>
  	<url-pattern>/aa</url-pattern>
  </servlet-mapping>

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

<body>
	这个是index5.jsp!

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


<%=className %> <br/>
<%=url %> <br/>
<%=user %> <br/>
<%=pwd %> <br/>
</body>

  

(三)exception对象

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

2、实例

 

// testError.jsp
<%@ page errorPage="handleError.jsp"%>
<%@ page contentType="text/html;charset=GB2312"%>
<html>
<body>
<%
      int i = 0;
      int j = 1/i;
%>
</body>
</html>
 
// handleError.jsp
<%@ page isErrorPage="true" contentType="text/html;charset=GB2312"%>
<html>
<body>
<h2>出错处理</h2>
在处理请求时发生了错误!
<p>
错误原因如下: <%= exception.getMessage() %>.
</body>
</html>
// 注意:没有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("<html>");
out.println("<head>");
out.println("<title>使用out对象输出HTML表格</title>");
out.println("</head>");
out.println("<body>");
out.println("<table>");
out.println("<tr>");
out.println("<td>BufferSize:</td>");
out.println("<td>"+BufferSize+ "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>Available:</td>");
out.println("<td>"+Available+ "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>数组序列</td>");
out.println("<td>数组值</td>");
out.println("</tr>");
for(int i=0;i<2;i++){
	out.println("<tr>");
	out.println("<td>str["+i+"]</td>");
	out.println("<td>"+str[i]+"</td>");
	out.println("</tr>");
}
BufferSize=out.getBufferSize();
Available=out.getRemaining();
out.println("<tr>");
out.println("<td>BufferSize:</td>");
out.println("<td>"+BufferSize+ "</td>");
out.println("</tr>");
out.println("<tr>");
out.println("<td>Available:</td>");
out.println("<td>"+Available+ "</td>");
out.println("</tr>");
out.println("</table>");
out.println("<body>");
out.println("</html>");
out.close();
%>

 效果:

 


 

(五)page对象

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

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

 

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

 

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

 

  • 大小: 27.4 KB
  • 大小: 27 KB
  • 大小: 931 Bytes
分享到:
评论

相关推荐

    jsp九大内置对象

    ### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...

    JSP九大内置对象

    jsp九大内置对象是学习jsp必须了解的内容,所以现在总结一下,以便以后学习中可以使用。

    jsp九大内置对象讲解

    JSP内置对象为开发者提供了强大的功能,使他们能够轻松处理HTTP请求和响应,管理会话状态,以及在不同页面间传递数据。理解这些内置对象及其作用域对于高效开发基于Java的Web应用程序至关重要。通过合理利用这些内置...

    Jsp内置对象session总结

    JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...

    JSP 9大内置对象学习总结

    ### JSP 9大内置对象学习总结 #### 一、Request对象详解 **1.... 在Web开发中,我们经常需要处理...通过以上对JSP内置对象的学习总结,我们可以更深入地理解这些对象的功能和使用方法,从而更好地进行Web开发工作。

    JSP内置对象归纳与总结

    JSP内置对象归纳与总结 JSP提供了九个内置对象,分别是out对象、request对象、response对象、session对象、application对象、pageContext对象、exception对象、config对象和page对象。这些内置对象是由容器实现和...

    JSP内置对象实验报告.doc

    charset=UTF-8");...通过这些实验,你可以深入理解JSP内置对象的用途和功能,并学会如何在实际开发中有效利用它们来构建更复杂的Web应用程序。练习部分鼓励你尝试更多的方法和属性,以增强你的理解和实践能力。

    jsp九大内置对象是什么

    ### JSP九大内置对象详解 #### 一、概述 在Java Web开发中,JSP(Java Server Pages)是一种广泛使用的动态网页技术。它允许开发者在HTML文档中嵌入Java代码来实现动态页面功能。为了方便开发者操作,JSP提供了一...

    jsp九大对象总结

    下面是这九大内置对象的详细介绍: 1. **Request对象**(javax.servlet.http.HttpServletRequest):代表客户端的请求信息。它提供了诸如获取请求参数、头信息、Cookie等方法。例如,`request.getAttribute()`用于...

    jsp内置对象 jsp的几个内置的对象图解

    jsp内置对象 有关jsp的一些内置的对象的总结

    jsp内置对象ppt总结

    jsp基础的学习资料,适合初学者,ppt形式,可以很容易学会jsp jsp基础的学习资料,适合初学者

    JSP九大内置对象和四种属性范围解读

    **JSP九大内置对象** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将HTML代码与Java代码结合在一起,以实现动态网页的创建。在JSP中,有九个预定义的内置对象,它们提供了对服务器端功能的直接访问,...

    实例详解JSP内置对象--request对象

    实例详解JSP内置对象--request对象 request对象是JSP中的内置对象之一,它提供了访问HTTP请求信息的功能。在基于Web的开发中,request对象扮演着极其重要的角色。本文将通过实例详解request对象的使用和掌握。 一...

    JSP9大内置对象.pdf

    JSP内置对象是JSP框架的核心组件之一,它们大大简化了Web开发过程中对HTTP请求和响应的处理工作。了解并熟练掌握这些内置对象的方法对于提高开发效率至关重要。通过对这些内置对象的学习和应用,开发者可以更加高效...

Global site tag (gtag.js) - Google Analytics