JSP三大指令

1. 指令简介

  1. page指令:JSP三大指令之一,page指令用来设置整个JSP页面的相关属性和功能;包括制定JSP脚本语言的种类、导入的包或者类、制定页面编码的字符集…
  • page 指令写在JSP页面文件的哪个地方都可以,它的作用范围是整个JSP页面。一般为了美观都会将这些指令头文件写在文件顶部。

  • 除了import导入Java的头文件之外,其他的指令属性都只能用一次。

  • 所有的page指令都只作用于当前的JSP页面。包括静态的包含文件

  • page指令是一个在一个头文件中设置多个不同的属性,也可以分多个不同的头文件写不同的属性。

  1. include指令:JSP三大指令之一,用来将一个页面引入到本页面。分为静态包含和动态包含两种情况。
  • 静态包含:静态包含是将所有的.jsp页面合并为一个页面会根据最初的页面样式展示;并且只产生一个Servlet(将所有的页面合并为一个Servlet)。因此需要注意冲突域的问题,因为包含的多个页面都在_Jspservice方法中,所以需要符合Java的语法。

  • 动态包含:所有的页面都是一个独立的Servlet,并且被引入的页面修改后在主页面也会显示。会根据当前页面的样式展示,不会产生变量定义的冲突域。

  1. taglib指令:JSP三大指令之一,使用taglib指令引入JSTL的标准标签库或者自定义的标签库,可以简化JSP的语法,从而简化JSP页面的设计。



2. page指令

  1. contentType、pageEncoding、language指令详解。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--设置响应页面的类型,和响应页面的编码格式--%>

<%@ page pageEncoding="UTF-8" %>
    <%--设置代码页面的编码格式--%>

在这里插入图片描述

  • language是只jsp页面中嵌入的高级语言是哪一种,language="java"只当前jsp页面嵌入的高级语言是java的代码并且使用java语法的标准。

  • pageEncoding是JSP文件本身的页面字符编码在编译,一般情况下pageEncoding是可以不指定的,如果不指定就会采用charset相同的编码。在指定charset情况下pageEncoding是不需要显示指定编码格式的。

  • pageEncoding不指定,charset也不指定编码,那么pageEncoding会采用服务器默认的编码格式,这种情况是非常容易乱码的。

  • 默认情况下新建的jsp文件charset都会指定清楚。


  1. errorPage、isErrorPage使用。
  • errorpage:errorPage=“url”,当前页面发生错误时使用errorPage可以转发到指定的url地址。

  • isErrorPage:isErrorPage默认值是false,表示这是一个正常Page页面,如果指定值为true表示这是一个错误处理页面,处理errorpage的错误。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page errorPage="errorpage.jsp" %>
<%@ page isErrorPage="false" %>    <%--不写就默认为false--%>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>这是page2.jsp页面。</p>
    <%
        int value = 5 / 0;
    %>
</body>
</html>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <p>这是errorpage.jsp页面</p>
    异常信息: <%=exception%>
</body>
</html>
	

在这里插入图片描述

  1. import指令,这是一个java引入包的关键词。由于JSP中会嵌入Java代码常常需要一些包的支持,因此可以使用import导入一个java包,这也是page指令中唯一一个可以多次使用的指令。
<%@ page import="java.util.Arrays" %>
<%--引入Arrays包下的所有库--%>

<%@ page import="java.lang.*" %>
<%--引入lang包下的所有库--%>

  1. extends = "class"继承一个父类

可以使用extends继承一个类,但是一般不推荐使用,会降低JSP的灵活性。

<%@ page extends="com.ljq.pojo.Person" %>

  1. isThreadSafe属性 是用来设置线程安全的,默认值为true。
  • 当设置为true时,表示当前JSP页面转换Servlet后会以多线程的方式来处理来自多个用户的请求

  • 如果设置为false,转换后的Servlet会实现SingleThreadMode接口,并且将以单线程的方式来处理用户的请求。

<%@ page isThreadSafe="true" %>

  1. isELIgnored用来设置当前page页面是否忽略EL表达式;EL表达式是用来简化JSP语法的。默认情况下值为false表示不忽略。
<%@page isELIgnored="false" %>
<%-- 不忽略EL表达式--%>

  1. session,表示当前页面是否要使用http Session会话。默认为true表示需要。
<%@page session="true" %>
<%-- 默认为true,表示需要session对象--%>

  1. buffer、autoFlush指令,用于对缓冲区的设置
  • buffer用来设置out对象输出缓冲区的大小,默认为8kb,也可以指定一个值。

  • autoFlush原来设置缓冲区溢出时是否强制输出缓冲区的内容,默认为true表示输出。

<%@ page buffer="10kb" autoFlush="true" %>
<%--设置缓冲区大小为10kb, 并且溢出时自动刷新--%>


3. include指令

  1. 静态包含:合并多个页面转为一个Servlet类。语法格式:<%@include file=“url”%>
  • 创建header页面 和 footer页面,存放在common文件夹下
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page pageEncoding="GBK" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>这是一个Header</h1>
    <%
        int i = 20;
    %>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page pageEncoding="GBK" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <h1>这是一个Footer</h1>
    <%
        int i = 5;
    %>
</body>
</html>
  • static.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%-- 引入header文件 --%>
    <%@include file="../common/header.jsp"%>
    <h2>这是网页主体</h2>
    <%
        int i = 10;
    %>
    <%-- 引入footer文件 --%>
    <%@include file="../common/footer.jsp"%>
</body>
</html>

在这里插入图片描述
分析:最开始header.jsp中的int i = 20定义成功,之后在static.jsp本页中继续定义int i = 10报错,footer.jsp的int i = 5也定义报错。可以得出静态包含所有的网页同属一个Servlet类并且都生成在_Jspservice方法中。


  • 去掉header 和 footer中的int i的定义正常展示时.class文件和网页样式。
    在这里插入图片描述

  1. 动态包含:每一个页面都是一个独立的Servlet因此每一个页面定义的变量都是属于不同的Servlet,当被引入的页面每次都将此时页面最新的样式传入引用处,也就是说可以被引入的页面数据更新后也能看到。语法格式:<jsp: include page="/common/header.jsp"/>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <jsp:include page="../common/header.jsp"/>
    <h1>dynamic.jsp</h1>
    <jsp:include page="../common/footer.jsp"/>
</body>
</html>

在这里插入图片描述


4. taglib指令

  • core核心库:JSTL的五大核心库之一,包含最基本的JSTL指令。

  • format核心库:JSTL五大核心库之一,用来格式化并输出文本、日期、时间、数字。

  • XML标签库:JSTL五大核心库之一,提供了创建和操作XML文档的标签。

  • sql标准库:JSTL五大核心库之一,提供了CRUD调用指令。

  • fn核心库:JSTL五大核心库之一,提供了JSTL基础的函数方法。

<%--JSTL核心标签库--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%--xml配置文档标签库--%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

<%--sql数据库标签库--%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<%--JTSL格式化标签库--%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<%--JSTL函数标签库--%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值