page指令

Page指令

Page指令是在JSP开发中较为重要,使用此属性,可以定义一个JSP页面的相关属性,包括设置MIME类型,定义需要导入的包,错误页的指定等。

Page指令语法:<%@page属性=“内容”%>

常用page属性:

contentType:定义JSP字符的编码和页面响应的MIME类型,如果是中文的话则使用如下形式:contentType=”text/html;charset=GBK”。

import:此jsp页面要导入哪几个操作包,例:import=”java.util.*”。

pageEncoding:JSP页面的字符编码,默认值为pageEncoding=”iso-8859-1”,如果是中文则可以设置为:pageEncoding=”GBK”。

Page_01.jsp的内容如下所示:

<%@pagelanguage="java"contentType="text/html;charset=GBK"%>

<html>

<head><title>www.baidu.com</title></head>

<body>

<center>

<h2>欢迎光临!</h2>

<h3>www.baidu.com</h3>

</center>

</body>

</html>

执行此段代码的结果如下:


因为一般情况下,默认编码是iso-8859-1,通过page指令可以对页面的编码进行设置。

最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。

MIME意味多功能Internet邮件扩展,它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。

每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。

问题:如果现在编写一个网页文件,发现文件的后缀可以是*.htm或者是*.html,那么为什么都可以呢?

实际上,要想解释这个问题依然要从MIME类型上着手。

<mime-mapping>

<extension>htm</extension>

<mime-type>text/html</mime-type>

</mime-mapping>

<extension>html</extension>

使用MIME类型,还可以将页面变成WORD文件输出。

<extension>doc</extension>

<mime-type>application/msword</mime-type>

Page_02.jsp的内容如下所示:

<%@pagelanguage="java"contentType="application/msword;charset=GBK"%>

<html>

<head><title>www.baidu.com</title></head>

<body>

<tableborder="1">

<tr><td>欢迎大家光临!</td></tr>

<tr><td>网址:www.baidu.com</td></tr>

<tr><td>本页将使用word显示!</td></tr>

</table>

</body>

</html>

执行此段代码,会产生一个下载提示框,保存的文件为Word类型。

我们还可以在代码中设置下载文件的名称,在以下代码中,我们设置下载的文档的名称为:skewrain.doc。

Page_03.jsp的类型如下图所示:

<%

response.setHeader("Content-Disposition","attachment;filename=skewrain.doc");

%>

执行此段代码,将产生一个skewrain.doc文档。打开此文档的内容如下所示:


一定要记住,以后如果希望一个JSP页面想变种形式显示,就通过设置MIME类型来完成。

contentType主要的功能还是设置MIME.而之后写的charset只是制定了编码,但是也可以通过pageEncoding来指定编码,这个在以后的开发工具中比较常见。

设置文件编码

Page_04.jsp的内容如下图所示:

<%@pagelanguage="java"contentType="text/html"

pageEncoding="GBK"%>

<html>

<head><title>www.baidu.com</title></head>

<body>

<tableborder="1">

<tr><td>欢迎大家光临!</td></tr>

<tr><td>网址:www.baidu.com</td></tr>

</table>

</body>

</html>

执行此段代码的结果如下所示:


在JSP中,如果pageEncoding存在,那么JSP的编码将由pageEncoding决定,而如果不存在才会由charset来决定。如果都不存在了,则使用ISO-8859-1编码。

如果一个JSP文件只是需要按照text/html风格显示的话,只需要指定一个pageEncoding就可以而来。而如果是其他的MIME类型的话,则还需要指定contentType。

错误页的设置

要想完成错误页的操作,则一定要满足以下的两个条件:

1):指定错误出现时的跳转页,通过errorPage属性指定;

2):错误处理页必须有明确的标识,通过isErrorPage属性指定。

在一些网络站点中,如果程序出现了错误,往往会统一跳转到一个页面上显示。这个页面会提示程序出现了错误,对不起之类的。。。请联系管理员。这种功能就称为错误页功能

Show.jsp的内容如下所示:

<%@pagelanguage="java"contentType="text/html"

pageEncoding="GBK"%>

<%@pageerrorPage="error.jsp"%>

<html>

<head><title>www.baidu.com</title></head>

<body>

<%

intresult=10/0;

%>

</body>

</html>

Error.jsp的内容如下所示:

<%@pagelanguage="java"contentType="text/html"

pageEncoding="GBK"%>

<%@pageisErrorPage="true"%>

<html>

<head><title>www.baidu.com</title></head>

<body>

<h1>程序出现了错误!</h1>

</body>

</html>

在http://localhost/skewrain/page目录下点击show.jsp文件,产生的结果如下图所示:


在正常情况下,肯定可以进行跳转,但有的时候也会出现无法跳转的问题。

因为跳转之后,有可能将errors.jsp也认为是一个出错的页了,所以不显示了,那么最好在error.jsp中设置一下,向用户表明,我这是一个正常的页面。这就要使用response,设置一个状态码。

<body>

<%

response.setStatus(200);

%>

<h1>程序出现了错误!</h1>

</body>

设置了状态码之后,就不会出现无法显示的问题了。


现在的地址栏上没有发生任何的改变,依然是show.jsp,但是内容已经改变了,以后这种不改变地址栏的跳转,都称为“服务器端跳转”。

但是如果每个页面都这样写挺麻烦的,在实际的使用中,最经常出现的问题:404和500,而且程序中也有可能异常:NullPointerException,现在如果要想集中处理这些问题也是可以的,只需要修改本地的web.xml就可以了。

在虚拟目录中的web.xml中的最下方加入以下代码。

<error-page>

<error-code>500</error-code>

<locatioin>/page/error.jsp</location>

</error-page>

<error-page>

<error-code>404</error-code>

<locatioin>/page/error.jsp</location>

</error-page>

<error-page>

<exception-type>java.lang.NullPointerException</exception-type>

<locatioin>/page/error.jsp</location>

</error-page>

配置完成之后服务器要重新启动

不过,这种错误页的指定相当业余,以后会学习到更多的操作方式。

数据库的连接操作

既然page指令中存在了import属性,所以导包就可以正确的使用了。但是需要说明的是,在整个page指令的属性中,只有import语句可以多次使用,而其他的属性只能设置一次。

启动mysql服务器的命令:

1.netstartmysql

2.mysql-uusername-ppassword

已知一张表的创建语句如下:

DROPTABLEuser; --删除表

CREATETABLEuser(

id INT AUTO_INCREMENTPRIMARYKEY,

name VARCHAR(30) NOTNULL,

password VARCHAR(32) NOTNULL,

age INT NOTNULL,

sex VARCHAR(2) DEFAULT'',

birthday DATE

);

我们读取MySQL数据库中该表的内容如下所示:


希望可以通过JSP进行列表的输出。

但是需要特别注意的是,mysql数据库连接的时候需要额外的驱动程序

驱动程序拷贝到TOMCAT安装目录中的lib文件夹里去。

服务器必须重新启动之后,才可以将新的配置读取进来。


使用JSP读取数据库中表的代码如下所示:【list_user.jsp】

<%@pagecontentType="text/html"pageEncoding="GBK"%>

<%@pageimport="java.sql.*"%>

<html>

<head><title>www.baidu.com</title></head>

<body>

<%!

publicstaticfinalStringDBDRIVER="org.gjt.mm.mysql.Driver";

publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/skewrain";

publicstaticfinalStringDBUSER="root";

publicstaticfinalStringDBPASS="mysqladmin";

%>

<%

Connectionconn=null;

PreparedStatementpstmt=null;

ResultSetrs=null;

%>

<%

try{

Class.forName(DBDRIVER);

conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);

Stringsql="SELECTid,name,password,age,sex,birthdayFROMuser";

pstmt=conn.prepareStatement(sql);

rs=pstmt.executeQuery();

%>

<center>

<tableborder="1"width="80%">

<tr>

<td>用户ID</td>

<td>用户姓名</td>

<td>用户密码</td>

<td>用户年龄</td>

<td>用户性别</td>

<td>用户生日</td>

</tr>

<%

while(rs.next()){

intuserId=rs.getInt(1);

StringuserName=rs.getString(2);

StringuserPassword=rs.getString(3);

intuserAge=rs.getInt(4);

StringuserSex=rs.getString(5);

StringuserBirthday=rs.getString(6);

%>

<tr>

<td><%=userId%></td>

<td><%=userName%></td>

<td><%=userPassword%></td>

<td><%=userAge%></td>

<td><%=userSex%></td>

<td><%=userBirthday%></td>

</tr>

<%

}

%>

</table>

</center>

<%

}catch(Exceptione){

System.out.println(e);

}finally{

rs.close();

pstmt.close();

conn.close();

}

%>

在浏览器中打开http://localhost/skewrain,点击其中的list_user.jsp,产生的效果如下所示:


既然现在可以进行数据库的连接了,那么就可以发现动态WEB的特点—可以访问数据库资源。


小结:

1.page指令可以指定MIME类型也可以进行页面乱码解决。

2.可以通过page指令进行错误页的跳转。

3.可以使用page指令在程序中导入java.sql包,并进行数据库操作。


JSP注释用于标注在程序开发过程中的开发提示,它不会输出到客户端

JSP注释的格式是:<%--注释内容--%>

与JSP注释形成对比的是HTML注释,HTML注释的格式是:<!--注释内容-->

JSP声明:<%!声明部分%>

输出JSP表达式:<%=表达式%>。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇