• JSP学习笔记二:JSP语法之编译器指令


      JSP语法分为三种不同的类型,分别是编译器指令,脚本语法和动作语法。

      1.编译器指令包括page,include和taglib。

      1-1 page:

      page属性包括import、contentType、pageEncoding、session、isELIgnored(只限 JSP 2.0)、buffer、autoFlush、info、errorPage、isErrorPage、isThreadSafe、language 和 extends。

      在page中设置属性,会在转译后的.java中有相应显示。

      比如,<%@ page contentType="text/html; charset=gbk" %>对应的.java代码为:response.setContentType("text/html; charset=gbk");

      比如,<%@ page import="java.awt.*"%>声明后,.java文件会声明相应的包。

      比如,<%@ errorPage="error.jsp"%>会使所在的JSP页面发生错误时,跳转到error.jsp。

      ...

      1-2 include即为导入,包括静态导入和动态导入。我们创建一个例子来理解一下。

      ①静态导入:首先,创建项目02Test(包含默认的JSP,index.jsp),另外新建一个JSP文件,included.jsp。输入代码如下:

    <% 
        int a = 10;
        int b = 15;
    %>
    
    <b>ssssss</b>

      然后在index.jsp中,输入代码:

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

    <%= a+b%>

      客户端显示如下:

      也就是说,index.jsp调用了included.jsp中的代码。我们可以查看一下转译之后的index.java文件,其中多了这些代码:

          int a = 10;
          int b = 15;
    
          out.write("
    ");
          out.write("
    ");
          out.write("<b>ssssss</b>");
          out.write(" 
    ");
          out.write("
    ");
          out.print( a+b);

      所以,当我们在index.jsp中再次声明a,b变量时,会提示错误,即是因为在included.jsp中已经声明。同样,我们把include语句和输出a+b的语句顺序颠倒,同样出错,因为尚未声明a,b。

      

      ②动态导入:同样使用上面的项目文件,不过将导入方式不同,动态导入代码如下:

    <jsp:include page="included.jsp"></jsp:include>

      我们在客户端同样能看到included.jsp中的代码效果:

      但是,我们在index.jsp中不能使用a,b变量。那么,为什么呢?

      下面,我们打开转译文件index.java,可以看到,在文件中只是增多了一行代码:

    org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "included.jsp", out, false);

      这种调用方式就类似于一个类调用另一个类。

      ③几点说明:首先,我想说明一下静态导入和动态导入的区别。

      a) 在静态导入中,是不生成转译文件的。然而在动态导入会生成,比如上面的例子,就会生成included.java文件。也就是说,静态导入是将两个类合并成一个类,而动态导入是在一个类中调用另一个类。

      b) 静态导入之后,included.jsp中声明的变量是可以用的,动态导入则不能。

      c) 那么,这两种导入分别在什么情况下使用呢?那就要看你的变量需求了。如果你的变量在两个jsp中都要用,那么静态导入就方便一点。如果不是这样,那么可以尽量使用动态导入,这样更安全,更灵活。

  • 相关阅读:
    开源天气预报api整理
    Android gradle 相关配置
    Android Base64转图片
    【转】数据加密算法详解
    【转】零基础学习Fiddler抓包改包
    【转】你所不知道的Android Studio调试技巧
    【转】Android Studio-1.2版本设置教程
    Android app应用多语言切换功能实现
    Android通用流行框架大全
    38个学习新技能的最佳网站
  • 原文地址:https://www.cnblogs.com/AEIOU19994/p/5455269.html
Copyright © 2020-2023  润新知