page指令
- page指令是在jsp开发中较为重要,使用此属性,可以定义一个jsp页面的相关属性,包括 设置MIME类型、定义需要导入的包、错误页的指定等
- page指令的语法:<%@ page 属性="内容"%>
page的主要属性:
设置MIME先来观察一道程序:
- <html>
- <head>
- <title> New Document </title>
- </head>
- <body>
- <center>
- <h2>欢迎光临滨州学院技术交流中心</h2>
- <h3>网址:www.zhaoyuqiagn.blog.51cto.com</h3>
- </center>
- </body>
- </html>
一运行结果是乱码,这个时候可以通过设置页面的编码,通过page指令来完成。
<%@ page language="java" contentType="text/html; charset=GBK"%>
- <html>
- <head>
- <title> New Document </title>
- </head>
- <body>
- <center>
- <h2>欢迎光临滨州学院技术交流中心</h2>
- <h3>网址 zhaoyuqiang.blog.51cto.com</h3>
- </center>
- </body>
- </html>
从上面代码的第一行可以看出page指令的基本用法了,language是指明语言类型,contentType是打开类型,charset是编码方式。
关于contentType:
问题:如果我们编写了一个静态网页文件,发现后缀名不论是*.html或是*.htm都可以。那么这是为什么呢?
问题的解决依然在MIME类型的contentType上。
我们用记事本打开tomcat/conf/web.xml文件。找一下,有如下代码:
- <mime-mapping>
- <extension>htm</extension>
- <mime-type>text/html</mime-type>
- </mime-mapping>
- <mime-mapping>
- <extension>html</extension>
- <mime-type>text/html</mime-type>
- </mime-mapping>
*.html和*.htm都可以的原因就在于上述代码定义好了html和htm都可以。 那么上一个代码中的
contentType="text/html; text/html是不可以写错的,有的同学写text/html的时候写成了test/html,这样写错运行后的结果如下:
运行后提示下载文件,而且是以ASP代码的形式下载。这是因为在 tomcat/conf/web.xml文件 中有关于 test/html 的定义。
MIME类型中contentType的取值远不止于此,看看tomcat/conf/web.xml文件中的各种定义的类型就能够发现。我们可以再举一个很经典的例子--文档以excel的方式下载。
打开tomcat/conf/web.xml文件 找到如下代码:
- <mime-mapping>
- <extension>xls</extension>
- <mime-type>application/vnd.ms-excel</mime-type>
- </mime-mapping>
我们可以看到,excel后缀名xls的对应contentType类型的取值是application/vnd.ms-excel。做如下代码,看一下运行结果如何。
- <%@ page language="java" contentType="application/vnd.ms-excel; charset=GBK"%>
- <html>
- <head>
- <title> zhaoyuqiang </title>
- </head>
- <body>
- <table border="1">
- <tr><td > 欢迎光临滨州学院技术交流中心</td></tr>
- <tr><td><h3>本也将使用excel显示</h3></td></tr>
- </table>
- </body>
- </html>
运行结果:
看以看出此时的确是以excel的形式出现,并提示下载。
关于设置文件编码:
contentType 主要的功能还是设置MIME,而之后写的charset只是指定了编码,但是也可以通过pageEncoding来指定编码,这个在以后的开发工具长比较常见
- <%@ page language="java" contentType="text/html; pageEncoding=GBK"%>
- <html>
- <head>
- <title> New Document </title>
- </head>
- <body>
- <center>
- <h2>欢迎光临滨州学院技术交流中心</h2>
- <h3>网址:zhaoyuqiang.blog.51cto.com</h3>
- </center>
- </body>
- </html>
在jsp中,如果pageEcoding 存在,那么jsp的编辑将由pageEcoding决定,而如果不存在才会有charset来决定,如果都不存在了 则使用ISO-8859-1编码
如果一个jsp文件只是需要按照text/html风格显示的话,只需要指定一个pageEcoding 就可以了,所以在以后的开发中用pageEncoding。
关于导包操作:
在page指令中,import(导包)也是常用的属性之一。这也是操作数据库必要的属性设置类型。
- <%@ page language="java" contentType="text/html; pageEncoding=GBK"%>
- <%@ page import="java.util.*"%> //导入java.util.*
- <html>
- <head>
- <title> New Document </title>
- </head>
- <body>
- <center>
- <h2>欢迎光临滨州学院技术交流中心</h2>
- <h3>网址:zhaoyuqiang.blog.51cto.com</h3>
- </center>
- </body>
- </html>
当然,上述代码的中的import是另起一行写的,也可以并在第一行中,不过我推荐另起一行写,原因是如果写在第一行中,第一行会很长,不明显,而且不注意的话,会引起标点符号的错误书写。
关于page指令的一些注意:
- page指令是一个jsp页面不可缺少的一部分。
- page指令一定要写在<%@ %>里面。
- page指令的书写注意标点和空格,如果不该有空格的地方出现了空格,也属于错误。
- import要另起一行写。