• [04] JSP标准动作



    1、概述

    JSP规范中定义了一系列的标准动作,Web容器按照规范进行了实现,可以解析并执行标准动作。而标准动作使用的是标准的xml语法,看上去也比较直观易懂,下面来看一个结构例子:
    <jsp:action_name attribute1="value1" attribute2="value2"></jsp:acion_name>  

    上面的代码中,action_name表示标准动作的名字,而attribute1和attribute2是标准动作的若干个属性。


    2、三种常用的标准动作

    2.1 forward

    forward动作,用于在JSP页面进行请求转发,如下代码示例:
    <jsp:forward page="loginSuccess.jsp"></jsp:forward>

    上述代码将把请求转发到loginSuccess.jsp页面,类似在Servlet中调用RequestDispatcher的forward方法进行请求转发。即在JSP页面中 <jsp:forward page="loginSuccess.jsp"></jsp:forward> 和 <% request.getRequestDispatcher("loginSuccess.jsp").forward(request, response); %> 是一样的效果。

    包含该动作的页面,在你访问时,则会被请求转发到 loginSuccess.jsp 页面当中去。

    2.2 include

    形如:
    <jsp:include page="head.jsp"></jsp:include>

    include动作则表示在JSP页面中进行动态包含,这和JSP指令中的静态包含是稍有不同的。动态包含,即在运行期间访问被包含的页面,并将响应结果同包含页面的响应结果合并,生成最终的响应。类似在Servlet中调用RequestDispatcher的include方法进行包含。

    和include指令的静态包含不同的在于,静态包含发生在翻译阶段,被包含的JSP文件不会生成Java类,而是翻译后包含在主体文件的Java类中,即静态包含最终只会生成一个Java类。而动态包含,则各自的JSP页面会生成各自的Java类,只是最终响应的结果会进行合并。

    2.3 param

    param动作往往是作为forward和include动作的子动作进行使用,用以传递参数。如下代码示例:
    <jsp:forward page="copyright.jsp">
        <jsp:param name="author" value="zhangsan"/>
    </jsp:forward>
    
    <jsp:include page="head.jsp">
        <jsp:param name="time" value="2018-01-30"/>
    </jsp:include>
    

    上述代码使用param为forward和include动作传递参数,参数将被作为请求参数进行传递。如此处为head.jsp传递了参数time,那么在head.jsp页面中,则可以通过类似 <%=request.getParameter("time") %>的方式进行获取显示。


    3、JavaBean相关的标准动作

    所谓JavaBean,是用Java语言描述的软件组件模型,实际上就是一个JavaSE的类,该类遵循一定的规范:
    • 必须是public类
    • 必须有一个无参的public构造方法
    • 返回属性的方法为getXxx
    • 设置属性的方法为setXxx

    而在JSP中,则有三个标准动作和JavaBean有关,由于现在更多使用JSTL、EL表达式,所以这些标准动作使用较少。

    3.1 useBean

    <jsp:useBean id="" class="" scope="" ></jsp:useBean>
    使用useBean标准动作,可以获取(或创建)一个在 {scope} 范围内名为 {id} 的 {class} 类,scope范围可以为page、request、session、application。

    <jsp:useBean id="zhangsan" class="com.learn.Person" scope="request" ></jsp:useBean>
    如上例的含义为:调用request.getAttribute("zhangsan"),如果没有zhangsan,则调用Person的无参构造方法创建,并setAttribute("zhangsan", new Person())。

    3.2 setProperty

    <jsp:setProperty name="" property="" param|value="" />
    setProperty用来对JavaBean对象的属性进行赋值,替代setXxx方法。其中:
    • name 表示JavaBean对象的id值
    • property 表示JavaBean对象的属性名
    • param 如果希望注入的值是请求参数,则使用param属性
    • value 如果希望注入的值是一个常量,则使用value属性

    3.3 getProperty

    <jsp:getProperty name="" property="" />
    getProperty用来调用JavaBean对象的getXxx方法获取对应属性值,其中:
    • name 表示JavaBean对象的id值
    • property 表示JavaBean对象的属性名


    4、其他

    以上就是常见的几种JSP标准动作了,还有一部分用得就更少了,如果有兴趣可以自行了解


    5、写在后面的话

    但是如今,谁还用什么JSP标准动作啊???


  • 相关阅读:
    python爬虫 --- 简书评论
    python 爬虫 伪装
    pygal的简单使用
    anaconda安装不存在的包
    python爬虫 赶集网
    my.conf 修改编码
    python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
    基于visual Studio2013解决C语言竞赛题之1021九九乘法表
    基于visual Studio2013解决C语言竞赛题之1020订票
    基于visual Studio2013解决C语言竞赛题之1019填数
  • 原文地址:https://www.cnblogs.com/deng-cc/p/8384368.html
Copyright © 2020-2023  润新知