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表达式:<%=表达式%>。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |