zoukankan      html  css  js  c++  java
  • JSP基础知识_3

    一.JSP指令

    1.简介

       为JSP引擎而设计,不产生可见输出,告诉引擎如何处理JSP页面中的其余部分

       基本语法:

            <%@ 指令 属性名="值" %>    (注意:属性名部分是大小写敏感的

      配置一个指令的多个属性时,可以分开成多条,也可以写成一条

      有page、include和taglib这三种指令

    2.page指令

        page指令用于定义JSP页面的各种属性,它作用于整个JSP页面,一般是放在整个JSP页面的起始位置

     <%@ page
        [ language="java" ]              //指定语言,但是唯一合法值只有“java”
        [ extends="package.class" ]      
        [ import="{package.class | package.*}, ..." ]   //导包
        [ session="true | false" ]     //当前JSP是否允许使用session,session隐藏对象在该jsp中不能被使用,即指定是否生产HttpSession对象
        [ buffer="none | 8kb | sizekb" ]   //
        [ autoFlush="true | false" ]
        [ isThreadSafe="true | false" ]
        [ info="text" ]
        [ errorPage="relative_url" ]   //指定当前页面出现错误时的实际响应页面
        [ isErrorPage="true | false" ] //指定该page为错误页面,可以使用exception隐藏对象
        [ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]//指定页面响应类型,JSP取值均为text/html;charset=utf-8
        [ pageEncoding="characterSet | ISO-8859-1" ]//页面编码,通常与contentType中charset值一致
        [ isELIgnored="true | false" ]//指定是否可以使用EL表达式
     %>

       errorPage和isErrorPage属性其他说明:

               errorPage属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前页面
                可以在web.xml文件中使用<error-page>元素为整个WEB应用程序设置错误处理页面,其中的<exception-type>子元素指定异常类的完全限定名

                <location>元素指定以“/”开头的错误处理页面的路径。如果设置了某个JSP页面的errorPage属性,那么在web.xml文件中设置的错误处理将不对该页面起作用

                isErrorPage:指定当前页面是否为错误处理页面,若true,则可使用exception隐藏变量;注意若设置了true并且使用了exception的方法,那么一般不能直接访问该页面

    3.include指令

       include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入

       当前JSP页面与静态引入的页面紧密结合为一个Servlet,即最终只生成一个xxx_jsp.java文件

    <%@ include file="relativeURL"%>  //file属性用于指定被引入文件的相对路径,以“/”开头,表示相对于当前WEB应用程序的根目录,否则,表示相对于当前文件

      具体说明:

        (1)被引入的文件必须遵循JSP语法;

        (2)被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments)

            作为静态引入文件的扩展名;

       (3)将JSP文件翻译成Servlet源文件时,JSP引擎将合并被引入的文件与当前JSP页面中的指令元素(设置pageEncoding属性的page指令除外),所以,除了import和pageEncoding

            属性之外,page指令的其他属性不能在这两个页面中有不同的设置值;

       (4)除了指令元素之外,被引入的文件中的其他元素都被转换成相应的Java源代码,然后插入进当前JSP页面所翻译成的Servlet源文件中,插入位置与include指令在当前JSP页面中的位置保持一致

       (5)引入文件与被引入文件是在被JSP引擎翻译成Servlet的过程中进行合并,而不是先合并源文件后再对合并的结果进行翻译

    4.taglib指令

         等学习完标签后再补上

    二.JSP标签

       JSP还提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现,

       标签名都以jsp作为前缀,并且全部采用小写,例如,<jsp:include>、<jsp:forward>

    1.<jsp:include>标签

        用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入;此时生成了两个xxx_jsp.java,通过方法将被包含页面包含尽量

    <jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
       //page属性用于指定被引入资源的相对路径
      //flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端

       静态引入和动态引入的区别:

        1.<jsp:include>标签是在当前JSP页面的执行期间插入被引入资源的输出内容,当前JSP页面与被动态引入的资源是两个彼此独立的执行实体,被动态引入的资源必须是一个能独立

          被WEB容器调用和执行的资源。include指令只能引入遵循JSP格式的文件,被引入文件与当前JSP文件共同合被翻译成一个Servlet的源文件

       2.<jsp:include>标签对JSP引擎翻译JSP页面的过程不起作用,它是在JSP页面的执行期间才被调用,因此不会影响两个页面的编译。由于include指令是在JSP引擎翻译JSP页面的

         过程中被解释处理的,所以它对JSP引擎翻译JSP页面的过程起作用,如果多个JSP页面中都要用到一些相同的声明,那么就可以把这些声明语句放在一个单独的文件中编写,然后在

         每个JSP页面中使用include指令将那个文件包含进来

       3.<jsp:include>标签可以通过<jsp:param>标签传参

    2.<jsp:forward>标签

        用于把请求转发给另外一个资源,类似于request.getRequestDispatcher("relativeURL ").forward(request, response);

    <jsp:forward page="relativeURL | <%=expression%>" />  //page属性用于指定请求转发到的资源的相对路径

      区别:

          1.RequestDispatcher.forward方法的JSP脚本代码的前后不能有JSP模版内容,而<jsp:forward>标签前后都可以有

          2.可以通过<jsp:param>标签传参,而RequestDispatcher.forward方法则不可以

    3.<jsp:param>标签

       在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数,name:参数名,value:参数值

  • 相关阅读:
    SpringBoot自动装配原理解析
    面试官:你知道Spring中有哪些可以让我们扩展的地方么
    Spring事件监听机制
    Spring扩展点之Aware接口族
    程序员的进阶课-架构师之路(13)-B-树
    程序员的进阶课-架构师之路(12)-2-3-4树
    程序员的进阶课-架构师之路(11)-最容易理解的红黑树
    程序员的进阶课-架构师之路(10)-霍夫曼树
    程序员的进阶课-架构师之路(9)-平衡二叉树(AVL树)
    程序员的进阶课-架构师之路(8)-二叉树
  • 原文地址:https://www.cnblogs.com/javamilan/p/4216250.html
Copyright © 2011-2022 走看看