一、page指令:
1.page指令是在JSP开发中较为重要,使用此属性可以定义一个JSP页面的相关属性,包括设置MIME类型、定义需要导入的包、错误页的指定等
2.page指令语法:<%@page属性="内容"%>(举例:<%@ page language="java" contentType="text/html;charset="GBK"%>)
二、page指令的两个最主要的属性:
1.contentType:定义JSP字符的编码和页面相应的MIME类型,如果是中文的话则使用如下形式:
contentType="text/html;charset=GBK"
2.pageEncoding:JSP页面的字符编码,默认值为pageEncoding="iso-8859-1",如果是中文则可以设置为:pageEncoding="GBK"
3.language:用来定义要使用的脚本语言,目前只能是“java”,例:language=“java”
4.import:此jsp页面要导入哪几个包,例:import="java.util.*"
三、问题:
1.*.htm文件和*.html文件完全一样,处理的MIME类型是一样的。
在Tomcat安装目录下conf/web.xml文件中
htm
text/html
html
text/html
2.若MIME类型设置错误,可能出现下载提示框
eg.
(1)不小心将"text/html;charset=GBK"误写为"test/html;chatset=GBK"
(2)如果希望页面可以按照Word文档的形式显示,可以使用如下的MIME类型
doc
application/msword
<%@ page language="java" contentType="application/msword;charset=GBK" %>
(3)通过response对象设置下载文件的名称
response对象表示的是服务器对客户端的回应,可以通过设置头文件信息的方式指定下载文件的名称:
<%
response.setHeader("Content-Disposition","attachment;filename=Joywy.doc");
%>
(3)设置文件编码(contentType和pageEncoding区别)
pageEncoding指的是JSP文件本身的编码,而contentType中的charset指的是服务器发送给客户端的内容编码,在JSP中如果pageEncoding存在,那么JSP的编码将由pageEncoding决定,否则将由contentType中的charset属性决定,如果两者都不存在,则将使用ISO-8859-1的编码方式。在JSP中所有内容都要经过两次编码操作,第一阶段会使用pageEncoding编码,第二阶段会使用utf-8编码,第三阶段就是Tomcat生成的网页,此时使用的才是contentType。
(4)错误页面的设置
要想完成错误页面的操作须满足以下两个条件:
1.指定错误出现时的跳转页,通过errorPage属性指定
2.错误处理页必须有明确的标识,通过isErrorPage属性指定
eg.
show.jsp
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@ page errorPage="error.jsp"%>
Welcome
<%
int result = 10/0;
%>
error.jsp
<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>
<%@ page isErrorPage="true"%>
This is a error page!!!
程序出错啦!!!
注意:
1.有时候可能出现无法跳转的错误页,原因是Tomcat将error.jsp也认为是出现了错误,从而无法跳转,此时可以在error.jsp中编写一下语句:
<% response.setStatus(200); %>
此语句表示设置了一个200的状态码,表示本页没有错误,可以正常显示。在实际使用中最经常出现的问题:404和500而且程序也可能出现异常:NullPointException,我们可以集中处理这个问题。修改虚拟目录下的WEB_-INF/web.xml文件。添加如下代码:
500
/error.jsp
404
/error.jsp
java.lang.NullPointerException
/error.jsp
2.错误页的跳转属于服务器端跳转,地址栏没有改变
四、数据库连接
注意:mysql数据库连接的时候需要额外的驱动程序,将驱动程序拷贝到Tomcat安装目录中的lib文件夹中。可以通过使用page指令在程序中导入java.sql包,并进行数据库操作。
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="java.sql.*"%>
www.mldnjava.cn,MLDN高端Java培训
<%!
public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
public static final String DBUSER = "root" ;
public static final String DBPASS = "mysqladmin" ;
%>
<%
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
%>
<%
try{
Class.forName(DBDRIVER) ;
conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
String sql = "SELECT empno,ename,job,sal,hiredate FROM emp" ;
pstmt = conn.prepareStatement(sql) ;
rs = pstmt.executeQuery() ;
%>
雇员编号
雇员姓名
雇员工作
雇员工资
雇佣日期
<%
while(rs.next()){
int empno = rs.getInt(1) ;
String ename = rs.getString(2) ;
String job = rs.getString(3) ;
float sal = rs.getFloat(4) ;
java.util.Date date = rs.getDate(5) ;
%>
<%=empno%>
<%=ename%>
<%=job%>
<%=sal%>
<%=date%>
<%
}
%>
<%
}catch(Exception e) {
System.out.println(e) ;
}finally{
rs.close() ;
pstmt.close() ;
conn.close() ; // 如果直接关闭连接也可以
}
%>