JSP指令`<%@%>`

JSP指令<%@%>

了解指令

  1. 指令的作用,是指导JSP翻译引擎如何翻译JSP代码

  2. JSP中共用三个指令

    • page 页面指令
    • include 包含指令
    • taglib 标签库指令
  3. 指令的语法格式

    <%@指令名 属性名=属性值 属性名=属性值...... %>
    

page指令的常用属性

contentType pageEncoding import session

errorPage isErrorPage isELIgnored

  1. contentType 设置JSP的响应内容类型,同时在响应的内容类型后面也可以指定响应的字符编码方式

  2. pageEncoding设置JSP的响应字符编码方式

    <%@ page contentType="text/html" pageEncoding="UTF-8" %>
    //等同于
    <%@ page contentType="text/html;charset=UTF-8" %>
    //翻译成为Java文件中的代码
    response.setContentType("text/html;charset=UTF-8");
    
  3. import组织导入(导包)

    <%@ page import="java.util.Date" %>
    翻译为Java源文件为导包语句
    import java.util.Date;
    
  4. session设置当前JSP页面中是否可以直接使用session内置对象;不写则默认session=“true”

    //1. session="true"表示可以直接使用九大内置对象session对象;不存在则创建一个新的session对象
    JSP:	<%@ page session="true" %>
    Java:	javax.servlet.http.HttpSession session = null;
        	session = pageContext.getSession();
    
    //2. session="false"表示不能直接使用session对象,并不会实实例化并获取session对象
    JSP:    <%@ page session="false" %>
        
    //3. 当我们想要使用session对象,并且如果没有session对象则不创建,那么可以指定session="false";然后通过Java代码的方式获取session对象
    JSP:    <%@ page session="false" %>
        	<% HttpSession session = request.getSession(false); %>
    Java:   HttpSession session = request.getSession(false);
    
  5. errorPage错误页面

    当前JSP页面出错之后要跳转的页面路径,需要使用该属性指定

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%--指定当此JSP页面出错后跳转到errorPage.jsp页面--%>
    <%@ page errorPage="errorPage.jsp" %>
    
    
        JSP
    
    
    <%
        <%-- 制造空指针异常,此JSP出错,会自动转发到errorPage.jsp页面--%>
        String s = null;
        s.toString();
    %>
    
    
    
  6. isErrorPage是否是错误页面,不写默认为isErrorPage=“false”

    isErrorPage="false"表示内置对象exception无法使用

    isErrorPage=“true” 表示内置对象exception可以使用

    设置当前页面是否为错误页面,当后天出错时,为了前端用户的使用感受而设置了errorPage属性,出错时跳转到错误页面,但是后台的错误信息也不会被打印出来了,所以通过isErrorPage属性设置当前页面是否为错误页面,当isErrorPage="true"时,表示当前 页面是一个错误页面,进而可以直接使用exception内置对象打印错误信息

    <%@ page contentType="text/html;charset=UTF-8" %>
    <%--设置当前页面为错误页面--%>
    <%@ page isErrorPage="true" %>
    
    
        error page
    
    
        error page
    
    
    <%
    	<%--打印错误信息--%>
        exception.printStackTrace();
    %>
    
  7. isELIgnored是否忽略EL表达式

includ指令

仅有一个属性file

<%@include file="msg.jsp"%>

  1. a.jsp可以将b.jsp包含进来,当然资源不一定是jsp,可能是其他的资源

  2. include的作用:

    在网页中有一些主题框架,例如网页头、网页脚,这些都是固定不变的,我们可以将网页头、网页脚等固定不变的单独写到某个JSP文件中,在需要的时候使用include指令包含进来;

    优点:

    代码量少了,便于维护(修改一个文件既可以作用于所有页面)

  3. 在一个JSP中可以使用多个include指令

  4. include实现原理

    1. 编译期(翻译)即将文件包含进去,多个JSP文件一起翻译为一个Java源文件
    2. a.jsp包含b.jsp,底层共生成一个Java文件,一个class字节码文件,翻译期包含/编译期包含/静态联编
  5. 静态联编的时候,多个JSP可以共享一个局部变量和实例变量,因为最终翻译之后,局部变量都被翻译到service()方法中,实例变量都被翻译到类体中

你可能感兴趣的:(#,JSP,java,jsp,servlet,web,javaee)