• JavaWeb学习之JSP(二) JSP标签


        JSP常用标签 

          什么是JSP标签

           JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标签能够替代部分java代码实现功能,使用JSP标签可以大量简化我们的代码增强代码的可读性。

    <jsp:标签名称 属性名=属性值 ... /><jsp:标签名称 属性名=属性值 ... ></jsp:标签名称>

          两个常用的JSP标签

         <jsp:forward>

         该标签的作用是把请求转发给另外一个资源,页面中使用该指令之后,当前页面中的所有要显示的内容都将无法显示,因为会直接转发到了另一个页面。

         首先创建test.jsp页面,在该页面中我们使用JSP内置对象request设置传递参数。

    <%@ 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>
            test.jsp页面,因为使用了forward标签,所以该页面中的内容不会显示
            <%
                request.setAttribute("name", "henu scm");
            %>
            <jsp:forward page="/forwardPage.jsp"/>
    </body>
    </html>

           然后创建forwardPage.jsp,同样使用request内置对象接收test.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>
        jsp:forward标签跳转的目标页面<br>
        <%=
            request.getAttribute("name")
        %>
    </body>
    </html>

          访问test.jsp,页面输出结果:

            jsp:forward标签跳转的目标页面
            henu scm

          注意:

          1、在test.jsp页面中JSP标签要写完整(注意不要忘记写结束标签),否则会抛出org.apache.jasper.JasperException异常。

          2、在JSP标签中没有用于重定向的标签。

          3、从上述实例中看出,在写有<jsp:forward>标签的页面中的内容是不会显示的。

          <jsp:include>

         该标签用于把另外一个文件引入到当前JSP里面,这种引入方式叫做动态引入。
          创建一个index.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>
        <%
            int sum = 100;
        %>
        <br>
        <jsp:include page="/includePage.jsp"/>
        <br>
        index sum=<%= sum %>
    </body>
    </html>

          然后创建一个includePage.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>
        <%
            int sum = 50;
        %>
        <br>
        includePage sum=<%= sum %>
    </body>
    </html>

         访问index.jsp页面,输出结果:

            includePage sum=50 
            index sum=100 

         打开生成java文件的目录可以看到,生成了两个jsp文件,分别是index_jsp.java和left_jsp.java

         可以得出结论,该指令的引入是在运行期完成的,而非在编译期。这个引入指令,是在程序运行过程中,由 index.jsp 文件中的_jspService()方法通过 JspRuntimeLibrary 类的 include()方法调用了 includePage.jsp 文件中的_jspService()方法。在运行期所执行的这种引入,称为动态引入。

         注意该处的<jsp:include>标签要与JSP指令中的<%@ include file="/filename" %>区别开来,不要搞混淆。

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

    <%@ include file="/xxx.jsp" %><!--静态引入-->

         静态引入会生成一个java文件,两个jsp文件中可以共享同一个变量,但不能定义重名的变量。     

    <jsp:include page="/xxx.jsp"/><!--动态引入-->

         动态引入会生成两个java文件,两个jsp文件中不可以共享同一个变量,可以定义重名的变量。

         在静态引入与动态引入均可使用时,一般使用静态引入。因为在程序运行时只存在一个Servlet,对资源的消耗较少,且不存在调用问题,执行效率较高。

         

  • 相关阅读:
    题解——逃离僵尸岛(BFS+最短路+虚拟节点)
    题解——history(离线并查集)
    最短路计数
    【NOI OL #3】优秀子序列
    枚举子集的方法
    【NOI OL #3】魔法值
    【NOI OL #3】水壶
    【HEOI2012】采花
    【JSOI2009】计数问题
    【POI2015】LOG
  • 原文地址:https://www.cnblogs.com/scm2019/p/11642233.html
Copyright © 2020-2023  润新知