学习目标(常用九大内置对象)
- out
- request
- response
- page
- session
- application
- pageContext
- config
- exception
1、page对象
- page是java.lang.Object类的一个实例,它指的是JSP实现类的实例,也就是说,它是JSP本身。相当于JSP编译生成servlet后是servlet类的this对象。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面实际当中很少用到。
2、pageContext对象
- pageContext对象代表当前JSP 页面的上下文,该对象提供了对当前JSP页面所有对象的访问,使pageContext对象的方法可以访问除本身以外的8个JSP内部对象。pageContext对象相当于JSP程序中所有对象功能的集成者。但其他的8个内置对象也都可以直接访问,所以pageContext对象基本不会采用。
3、四大作用域的范围
- page作用域指当前JSP页面的范围
- request作用域内的对象则是与客户端的请求绑定在一起
- session对象作用域:一次会话
- application的作用域:面对整个Web应用程序
<%//页面级别(当前页面内有效,基本用不到)pageContext.setAttribute("a",1);//请求转发级别(只要不是重定向,在一个请求范围内就有效,经常使用)request.setAttribute("b",2);//会话级别(只要早同一个浏览器的会话中就有效,经常使用)session.setAttribute("c",3);//服务器级别(只要服务器不关闭就有效,特殊情况使用)application.setAttribute("d",4); %>
- 四个作用域的比对
pageContext < request < session < application
4、exception对象(不经常用)
- exception 对象是专门负责处理JSP在执行过程中出现的异常问题的。但要注意 exception 对象一般要和page 指令一起配合使用,只有在异常处理页面(在页面指令里有isErrorPage=true的页面)中才可以使用,把 JSP 文件执行时所有发生的错误和异常都集中到异常处理页面去进行处理。这不仅提高了系统的统一性,程序流程也变得更加简单清晰。
<%@ page isErrorPage="true" errorPage="error.jsp" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %>
- 4.1、exception对象主要处理JSP执行异常
- 常用方法(前连个方法用的居多):
- app1.jsp
<%@ page import="java.text.SimpleDateFormat" %> <%@ page contentType="text/html;charset=UTF-8" errorPage="error.jsp" language="java" %> <html> <head><title>app1.jsp</title> </head> <body><%!int a=8; %> <%= a/0 %> <%--算数运算错误--%></body> </html>
- error.jsp
<%@ page isErrorPage="true" contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Title</title> </head> <body><h2>//此处的exception,在上述page标签里必须要有isErrorPage="true",//才可以使用<font color="red">错误原因:<%= exception.getMessage() %><br> <%= exception.toString() %></font></h2></body> </html>
程序说明:
app1.jsp中 errorPage=“error.jsp” 指定错误处理页面。
error.jsp中 isErrorPage=“true” 指定该页面是错误处理页面。
在error.jsp页面中<%=exception.getMessage() %>是输出获取的异常消息字符串。 - 运行结果
5、config对象(不经常用)
- config 对象代表当前JSP 配置信息,但JSP 页面通常无须配置,因此也就不存在配置信息。该对象在JSP 页面中非常少用,但在Servlet 则用处相对较大。因为Servlet 需要配置在web.xml 文件中,可以指定配置参数。
- 常用方法:
方法 返回值 方法说明 getInitParameter(name) String 获取Servlet初始化参数 getInitParameterNames() Enumeration 获取Servlet所有初始化参数名称 getServletContext() ServletContext 获取当前Application context getServletName() String 获取Servlet名称 - web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1"><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>index</servlet-name>//webapp下的index.jsp(相当于根目录)<jsp-file>index.jsp</jsp-file><init-param>//参数1 driverClassName<param-name>driverClassName</param-name><param-value>oracle.jdbc.Driver.OracleDriver</param-value></init-param><init-param>//参数2 url<param-name>url</param-name><param-value>jdbc:oracle:thin:localhost:1521:orcl</param-value></init-param></servlet><servlet-mapping><servlet-name>index</servlet-name><url-pattern>/index</url-pattern></servlet-mapping> </web-app>
- webapp下的index.jsp(相当于根目录)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>易买网 - 首页</title><link type="text/css" rel="stylesheet" href="css/style.css"/> </head> <body><%/*输出取得的初始化参数内容*/String driverClassName = config.getInitParameter("driverClassName"); String url = config.getInitParameter("url"); %> <h3>驱动程序:<%=driverClassName%></h3> <h3>连接地址:<%=url%></h3></body> </html>