zoukankan      html  css  js  c++  java
  • jsp动作指令

    动作指令与编译指令不同:
    1) 编译指令是通知Servlet引擎的处理消息,是在将JSP编译成Servlet时起作用
    2) 动作指令只是运行时的动作,通常可替换成JSP脚本,它只是JSP脚本的标准化写法
    JSP的动作指令主要有如下7个:

    1. jsp:forward:
      执行页面转向,将请求的处理转发到下一个页面,可以转发到:

      1. 静态HTML页面
      2. 动态的JSP页面
      3. 容器中的Servlet
        语法1:
        <jsp:forward page="{relativeURL|<%=expression%>}"/>
        语法2:
        <jsp:forward page="{relativeURL|<%=expression%>}">
        {jsp:param.../}
        </jsp:forward>
        第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter()方法获取
        request.getParameter("");
        从本质上来说,jsp:forward这个动作指令只是一个内部转发,即jsp:forward../并没有重新向新页面发送了请求,它只是完全采用了新页面来对用户生成响应(内部转发),请求依然是一次
        请求,所以请求参数、请求属性都不会丢失
    2. jsp:include:
      动态引入一个JSP页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面中
      <jsp:include page="{relativeURL|<%=expression%>}" flush="true"/>
      或者
      <jsp:include page="{relativeURL|<%=expression%>}" flush="true">
      <jsp:param name="parameterName" value="parameerValue"/>
      </jsp:include>
      这里要注意和编译指令的inlcude进行区分

    3. 静态引入(编译指令)
      <%@include file="file.jsp"%>
      可以将外部文件嵌入到当前JSP文件中,同时解析这个页面中的JSP语句(如果有的话),也就是说,它既可以包含静态的文本,也可以包含动态的JSP页面。包含页面在编译时将完全包含了被包含
      页面的代码。需要指出的是,静态包含还会将被包含页面的编译指令也包含进来,如果两个页面的编译指令冲突,那么页面就会出错

    4. 动态引入(动作指令)
      jsp:include
      归纳起来,动态导入和静态导入的区别有

    1. 静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet
    2. 动态导入则在Servlet中使用include方法来引入被导入页面的内容
    3. 静态导入时被导入页面的编译指令会起作用。
    4. 动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容
    5. 动态导入可以增加额外的参数
      实际上,forward动作指令和include动作指令(动态引入)十分相似,它们都采用方法来引入目标页面
      forward指令使用_jspx_page_context.forward()方法来引入目标页面
      include指令使用org.apache.jasper.runtime.JspRuntimeLibrary.include()方法来引入目标页面
      区别在于,执行forward时,被forward的页面将完全代替原有的页面,而执行include时,被include的页面只是插入原有页面
      即forward拿目标页面代替原有页面,而include则拿目标页面插入原有页面
    1. JavaBean相关
      3.1) jsp:useBean: 在JSP页面中初始化一个JavaBean的实例
      <jsp:useBean id="name" class="Classname" scope="page|request|session|application"/>
      3.1.1) id: JavaBean的实例名
      3.1.2) class: 确定JavaBean的实现类
      3.1.3) scope: 指定JavaBean实例的作用范围
      3.1.3.1) page: 该JavaBean实例仅在该页面有效
      3.1.3.2) request: 在本次请求有效
      3.1.3.3) session: 在本次session内有效
      3.1.3.4) application: 在本应用中一直有效
      3.1.4)
      3.2) jsp:setProperty: 设置JavaBean实例的属性值
      <jsp:setProperty name="BeanName" property="propertyName" value="value" />
      3.2.1) name: JavaBean的实例名
      3.2.2) property: 确定需要设置的属性名
      3.2.3) value: 确定需要设置的属性值
      3.3) jsp:getProperty: 输出JavaBean实例的属性值
      <jsp:getProperty name="BeanName" property="propertyName" />
      3.3.1) name: 确定需要输出的JavaBean实例名
      3.3.2) property: 确定需要输出的属性名
      这三个指令都是与JavaBean相关的指令,如果多个JSP页面中需要重复使用某段代码,我们可以把这段代码定义成java类的方法,然后让多个JSP页面调用该方法即可,这样可以达到较好的代码
      复用
      在.jsp页面中我们可以这样编码

    <jsp:useBean id="p1" class="lee.Person" scope="page"/>

    <jsp:setProperty name="p1" property="name" value="wawa"/>

    <jsp:setProperty name="p1" property="age" value="23"/>

    <jsp:getProperty name="p1" property="name"/>

    <jsp:getProperty name="p1" property="age"/>
    从代码中可以看到,我们使用了useBean、setProperty、getProperty来操作JavaBean的方法,同时我们需要明白的是,对于property="name",在JavaBean中提供了setName()、
    getName()方法来操作,property="age"也是同理
    代码中对应的JavaBean的Person类源代码如下
    package lee;
    public class Person
    {
    private String name;
    private int age;

    //无参数的构造器
    public Person()
    {
    }
    //初始化全部属性的构造器
    public Person(String name , int age)
    {
        this.name = name;
        this.age = age;
    }
    
    //name属性的setter和getter方法
    public void setName(String name)
    {
        this.name = name;
    }
    public String getName()
    {
        return this.name;
    }
    
    //age属性的setter和getter方法
    public void setAge(int age)
    {
        this.age = age;
    }
    public int getAge()
    {
        return this.age;
    }
    

    }

    1. plugin指令
      plugin指令主要用于下载服务器端的JavaBean、或Applet到客户端执行。由于程序在客户端执行,因此客户端必须安装虚拟机

    2. param指令
      param指令用于设置参数值,这个指令本身不能单独使用,因为单独的param没有实际意义。param指令可以与以下三个指令结合使用
      5.1) jsp:include
      当与include指令结合使用时,param指令用于将参数值传入被导入的页面
      5.2) jsp:forward
      当与forward指令结合使用时,param指令用于将参数值传入被转向的页面
      5.3) jsp:plugin
      当与plugin指令结合使用时,用于将参数传入页面中的JavaBean实例或Applet实例
      <jsp:param name="paramName" value="paramValue"/>
      */

  • 相关阅读:
    Beats数据采集---PacketbeatFilebeatTopbeatWinlogBeat使用指南
    《书读完了》—— 随笔
    《历史的天空》—— 读后总结
    Hadoop HDFS 用户指南
    单节点部署Hadoop教程
    [收藏]IntelliJ Idea快捷键
    《鬼谷子的局5》—— 读后总结
    Logstash为什么那么慢?—— json序列化
    《一线架构师实践指南》—— 读后总结
    Oracle Redo 以及 Archived日志简述
  • 原文地址:https://www.cnblogs.com/liuxueping/p/13944781.html
Copyright © 2011-2022 走看看