一、page对象
page 对象是为了执行当前页面应答请求而设置的 Servlet 类的实体,即显示 JSP 页面自身,与类的 this 指针类似,使用它来调用 Servlet 类中所定义的方法,只有在本页面内才是合法的。它是 java.lang.Object 类的实例,对于开发 JSP 比较有用。下表列出了 page 对象常用的方法。
page对象常用的方法
方法 | 说明 |
class getClass() | 返回当前 Object 的类 |
int hashCode | 返回 Object 的 hash 代码 |
String toString | 把 Object 对象转换成 String 类的对象 |
boolean equals(Object obj) | 比较对象和指定的对象是否相等 |
void copy (Object obj) | 把对象拷贝到指定的对象中 |
Object clone() | 复制对象(克隆对象) |
【例1】page 对象的应用。用 page 对象访问当前页面的信息,代码如下:
<%@ page contentType="text/html;charset=utf-8" import="java.lang.Object" %>
<html>
<body>
<h2> page对象应用</h2>
<%
Object obj;
obj=null;
%>
返回当前页面所在类:<%=page.getClass()%> <br>
返回当前页面的 hash 代码:<%=page.hashCode()%> <br>
转换成 String 类的对象:<%=page.toString()%> <br>
比较1:<%=page.equals(obj) %> <br>
比较2:<%=page.equals(this) %>
</body>
</html>
二、config 对象
config 对象是 javax.servlet.ServletConfig 类的实例,表示 Servlet 的配置信息。
当一个 Servlet 初始化时,容器把某些信息通过此对象传递给这个 Servlet,这些信息包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个 ServletContext 对象),config 对象的应用范围是本页。
开发者可以在 web.xml 文件中为应用程序环境中的 Servlet 程序和 JSP 页面提供初始化参数。表 1 列出了 config 对象的常用方法。 config对象的常用方法
方法 | 说明 |
ServletContext getServletContext() | 返回所执行的 Servlet 的环境对象 |
String getServletName() | 返回所执行的 Servlet 的名字 |
String getInitParameter(String name) | 返回指定名字的初始参数值 |
Enumeration getlnitParameterName() | 返回该 JSP 中所有初始参数名,一个枚举 |
Config对象的使用
1、WEB-INF目录中页面文件的执行
凡是在WEB-INF中的文件是不能直接浏览的,必须通过WEB-INF目录中的web.xml配置文件配置后才能浏览。如下面在WEB-INF创建一个test.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>
这是在WEB-INF文件夹中的jsp文件
</body>
</html>
如果我们直接执行该文件,则在浏览器中显示如下的错误信息
HTTP Status 404 -
type Status report
message
description The requested resource is not available.
Apache Tomcat/8.0.32
但如果我们对WEB-INF/web.xml文件进行修改如下
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>te</servlet-name>
<jsp-file>/WEB-INF/test.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>te</servlet-name>
<url-pattern>/te.jsp</url-pattern>
</servlet-mapping>
</web-app>
上面代码中最重要的内容为
<servlet>
<servlet-name>te</servlet-name>
<jsp-file>/WEB-INF/test.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>te</servlet-name>
<url-pattern>/te.jsp</url-pattern>
</servlet-mapping>
其中<servlet></servlet>和<servlet-mapping></servlet-mapping>主要的作用是把WEB-INF目录中的test.jsp文件映射为“/te.jsp”,也就是说我们要运行“WEB-INF”目录中的test.jsp页面,只在站点主目录中输入te.jsp就可浏览“WEB-INF/test.jsp”页面的内容。
2、获取WEB-INF/web.xml配置文件中的信息
如我们可以把数据库的驱动程序、数据库地址、管理员和密码保存在web.xml文件中,然后通过config对象获取,如web.xml配置文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>getconfig</servlet-name>
<jsp-file>/WEB-INF/getconfig.jsp</jsp-file>
<init-param>
<param-name>driver</param-name>
<param-value>org.gjt.mm.mysql.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/stu</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>admin</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>getconfig</servlet-name>
<url-pattern>/getconfig.jsp</url-pattern>
</servlet-mapping>
</web-app>
其中以内容为我们连接mysql数据用到的信息,如下
<init-param>
<param-name>driver</param-name>
<param-value>org.gjt.mm.mysql.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/stu</param-value>
</init-param>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>admin</param-value>
</init-param>
然后我们可以在页面中通过config对象来读取这些配置信息,getconfig.jsp文件代码如下(注意getconfig.jsp文件也是在WEB-INF目录中,并在web.xml文件进行映射):
<%@ 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>
<%
String driver=config.getInitParameter("driver");
String url=config.getInitParameter("url");
String user=config.getInitParameter("user");
String pass=config.getInitParameter("password");
%>
<br>mysql数据库驱动是:<%=driver %>
<br>访问数据库的地址:<%=url %>
<br>数据库管理员:<%=user %>
<br>数据库管理的密码:<%=pass %>
</body>
</html>
浏览的结果如下:
mysql数据库驱动是:org.gjt.mm.mysql.Driver
访问数据库的地址:jdbc:mysql://localhost:3306/stu
数据库管理员:root
数据库管理的密码:admin