JavaWeb学习-JSP系列-4-JSP的3个指令

    xiaoxiao2024-11-01  77

    这篇来学习JSP的三个指令,JSP中有一个用数字来总结JSP学习的内容:3个指令,6个动作,9大对象。先来看看什么是指令?JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见的输出,只是告诉引擎如何处理JSP页面。JSP2.0规范中定义了3个指令。page  include  taglib,本篇先来看看page指令。

     

    1.指令语法

    语法: <%@ 指令名称 属性1=“属性值1”属性2=“属性值2”%> 多个属性之间空格隔开,或者写成多行格式 <%@ 指令名称 属性1=“属性值1”%> <%@ 指令名称 属性2=“属性值2”%>

    2.page指令

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    上面是一个page指令例子,里面有四个属性,分别是Language表示jsp里面可以写java语言代码,contentType我们在请求头部分看到过这个属性,charset和pageEncoding都是字符集设置。

     

    总之,page指令的作用就是定义JSP也各种属性。处理上面这四个属性,jsp中会自动创建session对象,默认值是true.JSP中还会默认导入以下几种包。

    language="java" sun公司一开始设计本来想支持多语言,例如c#,但是目前为止,只能支持java语言,所以上面language="java"其实是可以删除的,默认就是支持java语言。 extends="package.class" 我们看到继承关键字,就是这个jsp继承哪个包下的class文件。默认jsp是继承父类HttpJspBase, 由于java语言一个类只能继承一个父类,不能多继承, 一般我们开发不可能写的父类比HttpJspBase还完美,所以这个extends我们也不写。 import="多个包 用逗号隔开" 前面我们使用了java.util.* 来识别Date对象。JSP中默认已经导入下面四个包。 import java.lang.*; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.jsp.*; session="true" JSP中默认自动创建session,前面我们利用session设置userName属性也用到过,默认值是true。 buffer="8kb" JSP中默认缓存数据是8kb。如果不缓存,值就写成none,还可以其他大小。不建议修改默认8kb就好。 autoFlush="true" 支持自动刷新,默认是true。 isThreadSafe="true" JSP默认是线程安全的 errorPage="/error.jsp" 这个就是如果访问当前jsp页面,出现错误,特别是那些运行时异常,为了不直接让用户看到http 500错误,我们让跳转到一个专门处理错误的页面,例如error.jsp。 contentType="text/html; charset=UTF-8" 等同于我们前面在servlet类中写的代码,resp.setContentType="text/html;charset=UTF-8" pageEncoding="UTF-8" 告诉JSP引擎要翻译文件使用的编码,其实只要设置pageEncoding编码就好;contentType="text/html; charset=UTF-8" 会自动随着pageEncoding变化而变化。你可以删除contentType,访问,然后查看jsp转译的源码就发现这个。 isELIgnored="false" 告诉JSP是否支持EL表达式,默认是false,EL表达式后面我们来学习。

     

    3.include指令

    静态包含:把其它资源包含到当前页面中。 <%@ include file="/include/header.jsp" %> 动态包含: <jsp: include page="/include/header.jsp"></jsp:include> 两者区别:翻译的时间段不同 静态包含:在翻译时就把两个文件合并 动态包含:不会合并文件,当代码执行到include时,才包含另外一个文件内容

    这里来举例一个静态包含的例子,创建两个jsp.分别是1.jsp和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> aaaaaaaaaa <%@ include file="/2.jsp" %> </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> bbbbbbbbbbb </body> </html>

    部署,访问1.jsp,应该输出 两个页面的内容

     

    4.taglib指令

    作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。 <%@ taglib uri-"http://java.sun.com/jsp/jstl/core" prefix="c" %>

    这个等后面学习到JSTL标签,再来演示。

    最新回复(0)