page指令

  •      page指令是在jsp开发中较为重要,使用此属性,可以定义一个jsp页面的相关属性,包括 设置MIME类型、定义需要导入的包、错误页的指定等
  •      page指令的语法:<%@ page 属性="内容"%>

page的主要属性:

jsp基础语法【03】_page指令_page类型

设置MIME

先来观察一道程序:

  1. <html> 
  2.   <head> 
  3.    <title> New Document </title> 
  4.   </head> 
  5.   <body> 
  6.    <center> 
  7.       <h2>欢迎光临滨州学院技术交流中心</h2> 
  8.      <h3>网址:www.zhaoyuqiagn.blog.51cto.com</h3> 
  9.    </center> 
  10.   </body> 
  11.  </html> 

一运行结果是乱码,这个时候可以通过设置页面的编码,通过page指令来完成。

  1. <%@ page language="java" contentType="text/html; charset=GBK"%> 

  2.  <html> 
  3.   <head> 
  4.    <title> New Document </title> 
  5.   </head> 
  6.   <body> 
  7.    <center> 
  8.       <h2>欢迎光临滨州学院技术交流中心</h2> 
  9.      <h3>网址 zhaoyuqiang.blog.51cto.com</h3> 
  10.    </center> 
  11.   </body> 
  12.  </html> 
  13.   

从上面代码的第一行可以看出page指令的基本用法了,language是指明语言类型,contentType是打开类型,charset是编码方式。

关于contentType:

   问题如果我们编写了一个静态网页文件,发现后缀名不论是*.html或是*.htm都可以。那么这是为什么呢?

      问题的解决依然在MIME类型的contentType上。

   我们用记事本打开tomcat/conf/web.xml文件。找一下,有如下代码:

  1. <mime-mapping> 
  2.       <extension>htm</extension> 
  3.       <mime-type>text/html</mime-type> 
  4.   </mime-mapping> 
  5.   <mime-mapping> 
  6.       <extension>html</extension> 
  7.       <mime-type>text/html</mime-type> 
  8.   </mime-mapping> 

*.html和*.htm都可以的原因就在于上述代码定义好了html和htm都可以。 那么上一个代码中的

contentType="text/html; text/html是不可以写错的,有的同学写text/html的时候写成了test/html,这样写错运行后的结果如下:                                          

jsp基础语法【03】_page指令_page类型_02

运行后提示下载文件,而且是以ASP代码的形式下载。这是因为在 tomcat/conf/web.xml文件 中有关于 test/html 的定义。

MIME类型中contentType的取值远不止于此,看看tomcat/conf/web.xml文件中的各种定义的类型就能够发现。我们可以再举一个很经典的例子--文档以excel的方式下载。         

打开tomcat/conf/web.xml文件 找到如下代码:

  1. <mime-mapping> 
  2.          <extension>xls</extension> 
  3.          <mime-type>application/vnd.ms-excel</mime-type> 
  4.      </mime-mapping> 

我们可以看到,excel后缀名xls的对应contentType类型的取值是application/vnd.ms-excel。做如下代码,看一下运行结果如何。

  1. <%@ page language="java" contentType="application/vnd.ms-excel; charset=GBK"%> 
  2.  <html> 
  3.   <head>  
  4.    <title> zhaoyuqiang </title> 
  5.   </head> 
  6.   <body>  
  7.    <table border="1"> 
  8.      <tr><td > 欢迎光临滨州学院技术交流中心</td></tr> 
  9.      <tr><td><h3>本也将使用excel显示</h3></td></tr> 
  10.    </table> 
  11.   </body> 
  12.  </html> 

运行结果:

jsp基础语法【03】_page指令_jsp_03

看以看出此时的确是以excel的形式出现,并提示下载。

关于设置文件编码:

 

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

 

  1. <%@ page language="java" contentType="text/html; pageEncoding=GBK"%> 
  2.  <html> 
  3.   <head> 
  4.    <title> New Document </title> 
  5.   </head> 
  6.   <body> 
  7.    <center> 
  8.       <h2>欢迎光临滨州学院技术交流中心</h2> 
  9.      <h3>网址:zhaoyuqiang.blog.51cto.com</h3> 
  10.    </center> 
  11.   </body> 
  12.  </html> 

 

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

 如果一个jsp文件只是需要按照text/html风格显示的话,只需要指定一个pageEcoding 就可以了,所以在以后的开发中用pageEncoding。

 

关于导包操作:

在page指令中,import(导包)也是常用的属性之一。这也是操作数据库必要的属性设置类型。

  1. <%@ page language="java" contentType="text/html; pageEncoding=GBK"%>  
  2. <%@ page import="java.util.*"%>  //导入java.util.*
  3.   <html>  
  4.    <head>  
  5.     <title> New Document </title>  
  6.    </head>  
  7.    <body>  
  8.     <center>  
  9.        <h2>欢迎光临滨州学院技术交流中心</h2>  
  10.       <h3>网址:zhaoyuqiang.blog.51cto.com</h3>  
  11.     </center>  
  12.    </body>  
  13.   </html>  

当然,上述代码的中的import是另起一行写的,也可以并在第一行中,不过我推荐另起一行写,原因是如果写在第一行中,第一行会很长,不明显,而且不注意的话,会引起标点符号的错误书写。

关于page指令的一些注意:

  • page指令是一个jsp页面不可缺少的一部分。
  • page指令一定要写在<%@  %>里面。
  • page指令的书写注意标点和空格,如果不该有空格的地方出现了空格,也属于错误。
  • import要另起一行写。