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的使用方法。
谢谢您的关注和阅读,文章不当之处还请您不吝赐教~~~
相关推荐
### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...
jsp九大内置对象是学习jsp必须了解的内容,所以现在总结一下,以便以后学习中可以使用。
JSP内置对象为开发者提供了强大的功能,使他们能够轻松处理HTTP请求和响应,管理会话状态,以及在不同页面间传递数据。理解这些内置对象及其作用域对于高效开发基于Java的Web应用程序至关重要。通过合理利用这些内置...
JSP 内置对象 Session 总结 Session 对象是一种 JSP 内置对象,用于管理客户端与服务器端之间的会话期。下面是 Session 对象的详细介绍。 什么是 Session Session 对象是一个 JSP 内置对象,它在第一个 JSP 页面...
### JSP 9大内置对象学习总结 #### 一、Request对象详解 **1.... 在Web开发中,我们经常需要处理...通过以上对JSP内置对象的学习总结,我们可以更深入地理解这些对象的功能和使用方法,从而更好地进行Web开发工作。
JSP内置对象归纳与总结 JSP提供了九个内置对象,分别是out对象、request对象、response对象、session对象、application对象、pageContext对象、exception对象、config对象和page对象。这些内置对象是由容器实现和...
charset=UTF-8");...通过这些实验,你可以深入理解JSP内置对象的用途和功能,并学会如何在实际开发中有效利用它们来构建更复杂的Web应用程序。练习部分鼓励你尝试更多的方法和属性,以增强你的理解和实践能力。
### JSP九大内置对象详解 #### 一、概述 在Java Web开发中,JSP(Java Server Pages)是一种广泛使用的动态网页技术。它允许开发者在HTML文档中嵌入Java代码来实现动态页面功能。为了方便开发者操作,JSP提供了一...
下面是这九大内置对象的详细介绍: 1. **Request对象**(javax.servlet.http.HttpServletRequest):代表客户端的请求信息。它提供了诸如获取请求参数、头信息、Cookie等方法。例如,`request.getAttribute()`用于...
jsp内置对象 有关jsp的一些内置的对象的总结
jsp基础的学习资料,适合初学者,ppt形式,可以很容易学会jsp jsp基础的学习资料,适合初学者
**JSP九大内置对象** JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将HTML代码与Java代码结合在一起,以实现动态网页的创建。在JSP中,有九个预定义的内置对象,它们提供了对服务器端功能的直接访问,...
实例详解JSP内置对象--request对象 request对象是JSP中的内置对象之一,它提供了访问HTTP请求信息的功能。在基于Web的开发中,request对象扮演着极其重要的角色。本文将通过实例详解request对象的使用和掌握。 一...
JSP内置对象是JSP框架的核心组件之一,它们大大简化了Web开发过程中对HTTP请求和响应的处理工作。了解并熟练掌握这些内置对象的方法对于提高开发效率至关重要。通过对这些内置对象的学习和应用,开发者可以更加高效...