`
DxnPratice
  • 浏览: 18824 次
  • 性别: Icon_minigender_2
  • 来自: 长沙
社区版块
存档分类
最新评论

JSP中九大隐式对象的总结

阅读更多

在编写jsp时,不需要声明(创建)就可以直接使用的对象称为隐式对象

在jsp中,有九大隐式对象:

request HttpServletRequest 请求信息
response HttpServletResponse 响应信息
PageContext PageContext 显示此页面的上下文
session HttpSession 表示会话对象
out JspWriter 输出值
config ServletConfig jsp的配置信息
page HttpJspPage 如同Java中的this
application ServletContext 表示此应用程序的上下文
exception Throwable 异常处理

 

(1)用来数据共享的对象:

pageContext:在本页共享数据

request:在同一次请求响应过程中共享数据

session:在同一个会话中共享数据(从浏览器到浏览器关闭之间默认为一次对话,如果浏览器关闭,session对象从浏览器内存中被清除)

application:在应用程序运行期间共享数据(服务器打开到服务器关闭之间默认为一次应用)

代码示例:

Index.jsp:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title></head>
<body><h2>这是index.jsp页面</h2>
 <%
 pageContext.setAttribute("pageContext", 1);
  request.setAttribute("request", 1);
  session.setAttribute("session", 1);
  application.setAttribute("application", 1);
  Object obj1=pageContext.getAttribute("pageContext");
  Object obj2=request.getAttribute("request");
  Object obj3=session.getAttribute("session");
  Object obj4=application.getAttribute("application"); %>
    pageContext:<%=obj1 %><br/>;
    request:<%=obj2 %><br/>;
    session:<%=obj3 %><br/>;
    application:<%=obj4 %><br/>;
   </body>
</html>

 

运行结果:

这是index.jsp页面

pageContext:1

; request:1
; session:1
; application:1

 

在index.jsp中加入如下代码:

 <%
    request.getRequestDispatcher("index2.jsp").include(request,response);
    response.sendRedirect("index2.jsp");
   

index2.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>这是index2.jsp页面</h2>
<%
//在转发的页面获取
Object obj1=pageContext.getAttribute("pageContext");
Object obj2=request.getAttribute("request");
Object obj3=session.getAttribute("session");
Object obj4=application.getAttribute("application");
%>
 pageContext:<%=obj1 %><br/>
 request:<%=obj2 %><br/>
 session:<%=obj3 %><br/>
 application:<%=obj4 %><br/>
 </body>
</html>

 这是在index.jsp中加入:request.getRequestDispatcher(“index2.jsp”).include(request,response)后运行结果:

这是index2.jsp页面

pageContext:null
request:1
session:1
application:1

这是index.jsp页面

pageContext:1
; request:1
; session:1
; application:1

 

这是在index.jsp中加入:response.sendRedirect(“index2.jsp”)后运行结果:

这是index2.jsp页面

pageContext:null
request:null
session:1
application:1

以上运行结果分析:

1,由于pageContext的作用域在本页面,所以只有在index.jsp本页面中其值为1,而在index2.jsp中,其值为空;

2,对于request,在index.jsp中加入include那行代码的时候,浏览器还是为同一个请求,所以request的值还是为1;而sendRedirect为重定向,即浏览器向服务器发出请求,服务器不是直接向浏览器返回index2.jsp这个页面(如果是的话,即为同一请求),而是让浏览器直接请求index2.jsp,所以此时不是同一个request,所以此时浏览器跳转到index2.jsp页面的时候,request为null;

3,对于session,只要是同一个浏览器,一个窗口或者多个窗口,均看做同一个会话,只有浏览器关闭,session对象从浏览器内存中被清空,session的值才为空;

例如关闭浏览器窗口,运行index2.jsp结果如下:

这是index2.jsp页面

pageContext:null
request:null
session:null
application:1

 

4,对于application,只要服务器未关闭,均为同一个应用,只有浏览器重启,application的值才会清空,如关闭服务器重启,再运行index2.jsp结果如下:

这是index2.jsp页面

pageContext:null
request:null
session:null
application:null

 (2),与输入输出有关的对象:

 out:向浏览器输出信息

 request:包含请求信息

 response:包含的响应信息

(3),和Servlet有关的对象:

  page:指jsp页面本身

   代码示例:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
   <%//由于JSP本身就是一个Servlet
		HttpJspPage servlet = (HttpJspPage) page;
		String str = servlet.getServletInfo();
		String str2=this.getServletInfo();
	      String str3 = this.getServletName();
	 %>
	<%=str%><br/>
	<%=str2%><br/>
	<%=str3%>
</body>
</html>

 运行结果如下:

Jasper JSP 2.1 Engine
Jasper JSP 2.1 Engine
jsp 

 config:用来存储jsp配置信息的对象

index5.jsp代码如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	这个是index5.jsp!
	<br/>
	<%
	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>
</html>

 在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>1234</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>aa</servlet-name>
  	<url-pattern>/aa</url-pattern>
  </servlet-mapping>
 

 运行index5.jsp结果如下:

这个是index5.jsp!
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@127.0.0.1:1521:ORCL
scott
1234 

(4),和异常处理有关的对象

Exception:用来处理异常的对象

定义错误页面 <%@ page isErrorPage="true" %>

如果页面需要处理异常 <%@ page errorPage="error.jsp"%>

代码示例:

index6.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@ page errorPage="error.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
		int a = 1, b = 0;
	%>
	<%=a / b%>
	<a href="index7.jsp">这是一个超链接</a>
	</body>
       </html>

 error.jsp代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
你访问的页面飞走了!!

<%
    String msg = exception.getMessage();
%>

<%=msg %>
</body>
</html>

 index6.jsp程序中设置了出错处理页面为 <%@ page errorPage=”error.jsp”%>,所以index6.jsp页面在运行过程中一旦出现异常,就会自动跳到error.jsp页面。在error.jsp中利用<%@ page isErrorPage=”true”%>将其设置为错误页面,可以在该页面中处理捕捉到的异常;由于index6.jsp中进行了除0操作,即为错误页面,所以运行index6.jsp时,页面无法显示,而跳转到了处理异常页面的error.jsp页面

运行结果如下:

你访问的页面飞走了!! / by zero

 

 

分享到:
评论

相关推荐

    Jsp的隐式对象实例教程文档

    这些隐式对象极大地简化了开发过程,提高了效率。本教程将详细介绍JSP的九个主要隐式对象及其用途。 1. **request对象**: `HttpServletRequest` 类的实例,用于处理客户端的请求信息。例如,你可以通过`request....

    jsp的九大隐式对象详解

    "JSP 九大隐式对象详解" JSP 九大隐式对象是指在 JSP 编程中可以直接使用的九个内置对象,这九个对象分别是:request、response、session、application、out、pageContext、config、page、exception。下面对每个...

    03-JSP隐式对象.ppt

    03-JSP隐式对象.ppt

    JSP 隐式对象

    JSP九大隐式对象学习,比较基础,适用入门人群

    EL表达式 隐式对象

    ### EL表达式 隐式对象 #### 一、EL表达式基础 ##### 1. 语法结构 EL表达式采用特定的语法结构来进行数据的提取和操作,其基本格式为 `${expression}`。这里的 `expression` 可以是变量、方法调用或其他逻辑表达式...

    JSP 作用域与隐式对象

    JSP 作用域与隐式对象[SP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它[1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似...

    jsp学习笔记

    jsp隐式对象是jsp技术的核心之一,jsp隐式对象是指在jsp页面中可以直接使用的java对象,这些对象都是jsp引擎提供的,jsp隐式对象共有九大对象,分别是: 1. request对象 2. response对象 3. pageContext对象 4. ...

    JavaWeb程序设计入门课件JSP隐式对象共8页.pdf

    本入门课件聚焦于JSP的隐式对象,这些预定义的对象极大地简化了开发流程,提高了开发效率。 1. JSP隐式对象: - application:全局应用程序范围的对象,所有用户共享,常用来存储在整个应用生命周期内都需要访问的...

    Java Web程序设计入门课件-JSP隐式对象.pptx

    本课程主要关注的是JSP中的一个重要特性——隐式对象。这些隐式对象是由JSP容器自动创建并提供给开发者,以简化开发流程,提高效率。 首先,我们要了解什么是JSP隐式对象。在JSP2.0规范中,预定义了9个隐式对象,...

    TP4 JSP 隐式对象TP4

    TP4 JSP 隐式对象TP4

    JavaWeb开发技术-JSP隐式对象.pptx

    JSP隐式对象是JSP提供的一组预定义的对象,可以直接在JSP页面中使用,无需显式声明,极大地简化了开发工作。以下是对JSP隐式对象的详细说明: 1. **out对象**: `out` 对象是 `javax.servlet.jsp.JspWriter` 类的...

    完整版Java JSP web开发教程 07_JSP隐式对象(共32页).ppt

    本教程中的第七章重点介绍了JSP的隐式对象,这些对象是Web容器自动创建并为JSP页面提供的便捷引用,无需通过`new`关键字实例化。 1. **JSP 脚本元素** - JSP脚本元素包括`&lt;jsp:scriptlet&gt;`、`&lt;jsp:declaration&gt;`、...

    JSP中隐式对象用法实例

    在JSP页面中,有一些特殊的对象被称为隐式对象。这些对象被自动创建,并且可以直接在JSP页面中使用,无需额外声明或实例化。常见的JSP隐式对象包括request、response、session、application、out、pageContext等。...

    Java Web程序设计入门课件-EL隐式对象.pptx

    总结来说,Java Web程序设计中的EL隐式对象极大地简化了开发者的工作,使他们能够更高效地处理Web应用程序中的数据。从请求参数到会话管理,再到Cookie操作,EL隐式对象提供了一套完整的工具集,帮助开发者构建功能...

    JSP 内置对象:request 对象.pptx

    request 对象是 JSP 中九个可供使用的隐式对象之一,它属于输入/输出对象,主要用于处理客户端传送给服务器端的请求参数。 request 对象提供了多种方法来获取请求参数,例如: 1. String getParameter(String name...

    JavaWeb程序设计入门课件EL隐式对象共6页.pdf

    EL隐式对象是预定义的一组变量,可以直接在JSP页面中使用,无需显式声明,极大地提高了开发效率。 1. EL基础:EL是JSP2.0引入的一种轻量级、声明式的脚本语言,它的主要任务是查询和显示存储在作用域范围内的Java...

    EL表达式的隐式对象_动力节点Java学院整理

    EL表达式的隐式对象是JSP中的一种特殊对象,用于存储和访问当前Web应用程序的状态信息。EL表达式隐式对象可以分为两类:一类是pageContext对象,另一类是四个域(page、request、session、application)中搜索的隐式...

Global site tag (gtag.js) - Google Analytics