Page指令
Page指令是在JSP开发中较为重要,使用此属性,可以定义一个JSP页面的相关属性,包括设置MIME类型,定义需要导入的包,错误页的指定等。
常用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>
<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):指定错误出现时的@R_755_404@,通过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
);
希望可以通过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类型也可以进行页面乱码解决。
3.可以使用page指令在程序中导入java.sql包,并进行数据库操作。
JSP注释用于标注在程序开发过程中的开发提示,它不会输出到客户端。
JSP注释的格式是:<%--注释内容--%>
与JSP注释形成对比的是HTML注释,HTML注释的格式是:<!--注释内容-->
JSP声明:<%!声明部分%>
输出JSP表达式:<%=表达式%>。
原文链接:https://www.f2er.com/xml/299185.html