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>
<%@ 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学习-------三大指令的主要内容,如果未能解决你的问题,请参考以下文章