JSP Page指令:页面指令
JSP Page 指令即页面指令,利用页面指令可以定义在整个 JSP 页面范围内有效的属性,page 指令可以放在 JSP 页面中的任意行,但习惯上放在文件的开始部分,方便阅读程序代码。Page 指令具有多种属性,通过这些属性的设置可以影响当前的 JSP 页面。 例如,在页面中正确设置当前页面响应的MIME类型为 "text/html",如果 MIME 类型设置不正确,则当服务器将数据传输给客户端进行显示时,客户端将无法识别传送的数据,从而不能正确地显示内容。 Page 指令中包含许多的属性。除 import 属性外,其他属性只能在指令中出现一次。 语法:
<%@page
示例1本示例将 page 指令的 autoFlush 属性设置为 true,此时如果缓冲区满,就会自动地将缓冲区中的内容输出到客户端。关键代码如下:<%@page autoFlush="true"%>
示例2本示例设置 buffer 属性的值为 8KB,即将缓冲区的大小设置为 8KB,关键代码如下:<%@page buffer="8kb"%> 示例3如果类属性设置不正确,如本示例设置为 "text/css",那么客户端浏览器在显示 HTML 样式时,就不能对 HTML 标记进行解释,而显示 HTML 代码,关键代码如下:<%@page contentType="text/html"%> 示例4在该属性中还可以设置 JSP 字符的编码,如本示例设置为 "gb2312",可以接受中文,关键代码如下:<%@page contentType="text/html;charset=gb2312"%> 示例5本示例设置 errorPage 属性为 error.jsp,即将当前页面出现的异常发送到 error.jsp 页面,关键代码如下:<%@page errorPage="error.jsp"%> 示例6本示例将属性 extends 的值设为 "java.util.Date",即当前页面转换为 Servlet 后的继承的类是 java.util.Date,关键代码如下:<%@page extends="java.util.Date"%> 示例7本示例在 Page 指令中可多次使用该属性来导入多个包,关键代码如下:<%@page import="java.util.*"%> <%@page import="java.text.*"%>或者通过逗号间隔来导入多个包,关键代码如下: <%@page import="java.util.*,java.text.*"%>在 JSP 中已经默认导入了以下包: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.*所以,即使没有通过 import 属性设置,在 JSP 页面中也可以调用上述包中的类。 若要在页面中使用编写的 JavaBeans,也可通过 import 属性导入。还可以通过 <jsp:useBean> 动作标签来创建一个 JavaBean 示例进行调用。 示例8本示例应用 info 属性显示页面信息,关键代码如下:<%@page info="This is index.jsp!"%> <%=this.getServletInfo()%>访问页面后的结果是: 显示页面信息: This is index.jsp 示例9若当前应用下包含 index.jsp 和 error.jsp 文件。在 index.jsp 页面中进行数据的格式化操作,发生异常后将信息显示到 error.jsp 页面,关键代码如下:<%@page contentType="text/html;charset=gb2312"errorPage="error.jsp"%> <% String name="lzw"; Integer.parseInt(name); //将字符串转化为整型 %>上述代码将一个非数字格式的字符串转化为整型,因此将发生异常,最终进入 errorPage 属性指定的 error.jsp 页面显示错误信息。 在 error.jsp 页面中需要将 isErrorPage 属性设为 true,然后才能调用 exception 对象输出错误信息。error.jsp 页面的代码如下: <%@page contentType="text/html;charset=gb2312"isErrorPage="true"%>出现错误!错误如下: <%=exception.getMessage()%>访问 index.jsp 页面后,结果如下: For?input?string: "lzw" 示例10本示例应用 isELIgnored 属性,设置其值为 false,表示不忽略表达式语言“${}”,关键代码如下:<%@page isELIgnored="false"%> 示例11本示例将 isTreadSafe 属性设为 true,则当前页面被转换为 Servlet 后,会以多线程的方式处理来自用户的请求,关键代码如下:<%@page isThreadSafe="true"%> 示例12本示例设置了当前页面中使用 Java 语言来编写 JSP 脚本,并且目前只能是 Java 语言,关键代码如下:<%@page language="java"%> 示例13本示例是将页面字符编码的设定属性设置为 "ISO-8859-1",那么本页面将不会支持中文格式的内容,关键代码如下:<%@page pageEncoding="ISO-8859-1"%> 示例14本示例将 session 属性设置为 true,则表示可以使用服务器内置的 session 对象,关键代码如下:<%@page session="true"%> 典型应用本示例通过应用 page 指令设置 contenType 属性的值为 "image/jpeg",当访问 index.jsp 页面时,客户端的浏览器将启动图形解码器来解析执行收到的信息。代码如下:<%@page language="java"import="java.util.*"pageEncoding="gb2312"%> <%@page contentType="image/jpeg"%> <%@page import="java.awt.*"%> <%@page import="java.io.*"%> <%@page import="java.awt.image.*"%> <%@page import="java.awt.geom.*"%> <%@page import="com.sun.image.codec.jpeg.*"%> <%int width=200,height=200; //描述具有可访问图像数据缓冲区的Image BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics g=image.getGraphics(); g.setColor(Color.white); g.fillRect(0,width,height); Graphics2D g_2d=(Graphics2D)g; //以double精度定义椭圆 Ellipse2D ellipse=new Ellipse2D.Double(40,80,100,40); g_2d.setColor(Color.blue); //执行从2D坐标到其他2D坐标的线性映射 AffineTransform trans=new AffineTransform(); for(int i=1;i<=12;i++){ trans.rotate(30.0*Math.PI/180,90,100); g_2d.setTransform(trans); g_2d.draw(ellipse); } g.dispose(); //获取指向客户端的输出流 OutputStream outClient=response.getOutputStream(); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(outClient); encoder.encode(image); %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |