jsp学习-------三大指令

Posted 晓锋残月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp学习-------三大指令相关的知识,希望对你有一定的参考价值。

一、三大指令

JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令:

  • page指令
  • Include指令
  • taglib指令

1.page指令

作用:用于定义JSP页面的各种属性
属性:
①import 和java代码中的import是一样的    
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>


JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;


② session: 是否会自动创建session对象。默认值是true;



③ buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.(一般不更改


④errorPage: 如果页面中有错误,则跳转到指定的资源。errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。如果不写“/”则代表相对路径。

例如有下面两个例子:

1.jsp为

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"  errorPage="2.jsp"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		out.print(10/0);
	 %>
</body>
</html>


2.jsp为

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	你的分母为0,错误。
</body>
</html>

访问1.jsp时,可得到结果为:

从上面的例子可以得到以下结论:

1.使用errorPage实际上进行的是请求转发



 ⑤isErrorPage: 是否创建throwable对象。默认是false;

首先更更改为true

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isErrorPage="true"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%=exception.getMessage() %>
	你的分母为0,错误。
</body>
</html>

查看其翻译的Java代码,_2_jsp.java


由上图可知其创建了一个Throwable对象

得到的结果为:



如果使用false


去掉上面的错误后,查看翻译的_2_jsp.java文件


并没有查找到Throwable对象。

在浏览器中查看结果为:




⑥contextType: 等同于response.setContextType("text/html;charset=utf-8");告诉浏览器使用怎样的格式读取文件

⑦pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。

⑧isELIgnored: 是否支持EL表达式。 默认是false

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	$1+1
</body>
</html>
访问该界面,得到下面的结果:


如果进行更改,改为true,表示要忽略el表达式



得到的结果为:



2.include指令

(1)静态包含:把其它资源包含到当前页面中。

例如:在1.jsp页面内包含one.jsp页面

<%@ include file="one.jsp" %>
得到的结果:



查看翻译的文件_3_jsp.java


通过上面的内容可以得到:

静态包含在翻译时将两个文件合并。


(2)动态包含:

<jsp:includepage="one.jsp"></jsp:include>

 得到的结果相同,但是在翻译的文件中



不会合并文件,当代码执行到one.jsp时,才包含另一个文件的内容。

 


3.taglib指令

(1)作用

在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。

(2)导入内容

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
(3)使用例子

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:if test=""></c:if>
</body>
</html>







以上是关于jsp学习-------三大指令的主要内容,如果未能解决你的问题,请参考以下文章

JSP学习 三大指令九个内置对象JavaBeanEL表达式

JSP学习 三大指令九个内置对象JavaBeanEL表达式

学习jsp

JSP基础--三大指令

JSP的三大指令

JSP的三大指令