JSP(2) - JSP指令 - 小易Java笔记

来源:互联网 发布:js能定义二维数组吗 编辑:程序博客网 时间:2024/06/03 22:07
JSP指令是给JSP引擎用的,即给服务器用的。作用是告诉服务器,该如何处理JSP中除了指令之外的内容。包括page、include、taglib三种

基本的语法格式:<%@ 指令名称 属性1="值1" 属性2="值2" ....%>

1、page指令

page指令最简单的使用方式:<%@ page pageEncoding="UTF-8"%> 但myEclipse中的JSP模板中自动加入java.util.*包

JSP只能只编译一次就可以到处使用

pageEncoding原理 - 小易


作用是定义JSP页面的各种属性,有如下属性:

(1)language : 指示JSP页面中使用脚本语言。默认值为java(其他脚本语言如:asp、php)

(2)import:导入JSP中的Java脚本使用到的类或包。(如同Java中的import语句)

==> JSP引擎自动导入以下包中的类:javax.servlet.*; javax.servlet.http.*; javax.servlet.jsp.*;

==> 注意:一个import属性可以导入多个包,用逗号分隔

(3)pageEncoding : 通知引擎读取JSP时采用的编码(因为要翻译)。还有contentType属性的作用

==> pageEncoding的实现原理:


==> 从上一节的.java的代码中可以看出在翻译后的文件中有输出了一句response.setContentType("text/html;charset=UTF-8");

(4)contentType : 指定当前页面的MIME类型,作用与Servlet中的response.setContentType()作用完全一致

==> contentType="text/html;charset=utf-8" 最终的效果是在翻译后的文件中有输出了一句response.setContentType("text/html;charset=UTF-8");

(5)sessioin : 指示JSP页面是否创建HttpSession对象。默认值是true,创建

(6)errorPage : 指示当前页面出错后转向(转发)的页面。若其值即目标页面如果以"/"(当前应用)开头就是绝对路径(不加项目名)

==> 配置全局错误提示页面,在web.xml中使用以下两种方法设置


若出现java.lang.Exception就转到error.jsp<error-page><exception-type>java.lang.Exception</exception-type><location>/error.jsp</location></error-page>-------------------------------------------------若出现404错误(找不到页面)就转到404.jsp<error-page><error-code>404</error-code><location>/404.jsp</location></error-page>
(7)isErrorPage : 指示当前页面是否产生Exception对象。若产生就可以使用这个Exception对象对错误进行查看处理

(8)buffer : 指示JSP用的输出流的缓存大小。默认值是8Kb。若值为none则没有缓存

(9)autoFlush : 自动刷新输出流的缓存。默认为true,即缓存满后就刷新数据

(10)isELIgnored : 是否忽略EL表达式。${1+1}。默认值是false

(11)extends : 指示JSP对应的Servlet类的父类。一般不要修改

(12)isThreadSafe : 指示页面是否是线程安全的(过时了)。默认是true

==> true:不安全的

==> false:安全的。指示JSP对应的Servlet实现SingleThreadModel接口

2、include指令

(1)静态包含:使用include指令

==> 作用:包含其他的组件

==> 语法:<%@include file=""%> file指定要包含的目标组件。路径如果以"/"(当前应用)开头就是绝对路径

==> 原理:把目标页面的内容通过out.print输出到源页面的service方法中

(2)动态包含:使用的jsp动作

==> 语法:<jsp:include page=""/> 路径如果以"/"(当前应用)开头就是绝对路径

(3)说明:开发中尽量使用静态包含,因为动态包含每次访问的时候都会执行一次,而静态包含只编译一次就可以一直使用

==> 分析:静态包含是两个jsp文件只编译成一个.class文件;而动态包含是,两个jsp文件编译成各自的.class文件,然后这两个class文件在tomcat服务器中进行整合,最终输出结果

3、taglib指令

作用:引入外部的标签

语法:<%@taglib uri="标签名称空间" prefix="前缀"%> 如:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

4、实例

(1)errorPage和isErrorPage实例
1a.jsp中的部分代码:<%@ page pageEncoding="UTF-8" errorPage="/jspzhiling/1b.jsp"%><body>表达式1/0是否有错?<% out.print(1/0);%></body>-----------------------------1b.jsp中的部分代码:<%@ page pageEncoding="UTF-8" isErrorPage="true"%><body>这是错误页面,如果1a.jsp发生错误,就跳转到此页面<br />错误信息是:<%out.print(exception.getMessage());%></body>-----------------------------访问http://127.0.0.1:8080/testJsp/jspzhiling/1a.jsp结果:(可知页面显示1b.jsp的内容,但是浏览器的地址没有改变)这是错误页面,如果1a.jsp发生错误,就跳转到此页面错误信息是: / by zero


(2)include实例

2a.jsp中的部分代码:1<%@ include file="/jspzhiling/2c.jsp"%>--------------------------------------------------2b.jsp中的部分代码:1<jsp:include page="/jspzhiling/2c.jsp"></jsp:include>--------------------------------------------------2c.jsp中的部分代码:<body>2</body>--------------------------------------------------访问http://127.0.0.1:8080/testJsp/jspzhiling/2a.jsp和http://127.0.0.1:8080/testJsp/jspzhiling/2b.jsp结果都为:12






0 0
原创粉丝点击