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九大内置对象是学习jsp必须了解的内容,所以现在总结一下,以便以后学习中可以使用。
JSP内置对象实验报告
Jsp内置对象session总结:详细介绍,Session机制,原理,生命周期h和Session的主要方法等。
JSP内置对象的归纳与总结,内置对象概述 out对象 request对象 response对象 session对象 application对象 pageContext对象 exception对象
JSP9大内置对象学习总结 JSP内置9大对象 request常用方法 response session与客户端取得会话 application实现网页计数器
jsp内置对象 有关jsp的一些内置的对象的总结
jsp基础的学习资料,适合初学者,ppt形式,可以很容易学会jsp jsp基础的学习资料,适合初学者
jsp的9大内置和4大作用域对象精心总结,如果里面有错误和不足之处希望各位多多指正!!!
jsp中9个内置对象的总结,以及每个对象的常用函数的作用和用法。
jsp 实验三 内置对象
JSP简单总结,内置对象的简单使用,基础概念概括的还算不错
6. JSP内置对象 5 7. JSP内置对象及其作用 5 8. 获取页面参数 5 9. 重定向(forward与sendRedirect)区别 6 10. JSP和Servlet的区别 7 11. Cookie学习 7 12. Session学习 9 Servlet技术总结 9 1. Servlet生命...
今天笔试了JSP很多题 回来总结,顺便和大家分享
有关jsp的内之对象的详细介绍和总结,这是我总结的ppt。
JSP知识小总结一.指令元素二.脚本元素三.标准动作元素四.内置对象五.JavaBeans的使用六.JSP中的文件操作 七.JSP运行原理剖析
JSP实验环境组建、简单JSP应用、JSP内置对象的应用、Servlet的应用、JSP访问数据库的应用
JSP基础课程知识点总结,多采用表格对比/归纳总结。...包含知识点内容:JSP简介、JSP语法、Tag文件与Tag标记、JSP内置对象、JSP与Java bean、Java Servlet基础、MVC模式、JSP中使用数据库、JSP中的文件操作。
总结Jsp中四种作用范围,应用方法总结
3.Servlet中没有内置对象,jsp中的内置对象都是必须通过HttpServletRequest对象。HttpServletretSponse对象以及HttpServlet对象得到。 4.Jsp是servlet的一种简化,使用jsp只需要完成程序员需要输出到客户端的内容,...
模块二:使用eclipse和idea快速开发jsp(idea和tomcat的相关配置、eclipse创建web项目、jsp页面元素、jsp九大内置对象、四大作用域对象、解决get/post请求乱码问题、cookie和session详解、请求重定向);模块三:...