JSP基础(5)-JSP标准动作

2024-06-09 18:36:46

一、JSP标准动作基本介绍:

在jsp页面被翻译成Servlet源代码的过程中,当容器遇到标准动作元素时,就调用与之相对应的Servlet类方法来代替它,所有标准动作元素的前面都有一个JSP前缀作为标记,一般形式如:<jsp:标记名… 属性…/>。有些标准动作中间还包含一个体,即一个标准动作元素中又包含了其他标准动作元素或者其他内容,包括体的标准动作的使用格式如下:

<jsp:标记名…属性…>

<jsp:标记名…属性以及参数…/>

</jsp:标记名>

根据各个标准动作的功能,可以将这些标准动作分成以下6组:

1.  jsp中使用到JavaBean的标准动作:<jsp:useBean> 定义使用一个JaveBean实例,ID属性定义了实例名称;<jsp:getProperty>从一个JavaBean中获取一个属性值,并将其添加到响应中;<jsp:setProperty>设置一个JavaBean中的属性值;

2.  在jsp中包含其他jsp文件或者web资源的标准动作:<jsp:include>在请求处理阶段包含来自一个Servlet或者jsp文件的响应,注意与include指令的不同;

3.  将到达的请求转发给另外一个jsp页面或者web资源以便进一步的操作的标准动作:<jsp:forward>将某个请求的处理转发到另一个Servlet或者jsp页面;

4.  在其他标准动作的中间指定参数的标准动作:<jsp:param>对使用<jsp:include>或者<jsp:forward>传递到另外一个Servlet或者jsp页面的请求添加一个传递参数值;

5.  在客户端的页面嵌入java对象(例如applet,是运行在客户端的小java程序)的标准动作:<jsp:plugin>根据浏览器类型为java插件生成Object或者Embed标记;<jsp:params>;<jsp:fallback>;

6.  仅仅用于标记文件的标准动作:

<jsp:attribute>;<jsp:body>;<jsp:invoke>;<jsp:dobody>;<jsp:element>;<jsp:text>;<jsp:output>

二、<jsp:useBean>标准动作:

使用<jsp:useBean>标准动作可引用一个将在jsp页面中使用的javaBean类,javaBean的使用实现了逻辑处理和页面显示在一定程度上的分离,从而可以增加代码的可重用性,如果将逻辑处理写在一个javaBean类中,在其他所有jsp页面程序中即可使用<jsp:useBean>标准动作来引用该javaBean类,使用形式如下:

<jsp:useBean id=”name” class=”package.class” scope=”….” type=”…”/>

<jsp:useBean>标准动作还可以包含一个体,如:<jsp:setProperty>动作,在第一次创建这个实例的时候,就会使用<jsp:setProperty>动作来进行参数的赋值操作,也就是说,如果该页面中已经存在了JavaBean类的实例,则不会再执行<jsp:setProperty>动作所进行的参数赋值。另外,,<jsp:useBean>标准动作也并不意味着每次都要创建一个实例,如果页面中已经存在该JavaBean的实例,则只直接使用这个实例,使用形式如下:

<jsp:useBean id=”name” class=”package.class” scope=”….” type=”…”/>

<jsp:标记名… 属性以及参数…/>

……

</jsp:useBean>

代码说明: 使用class属性来指定需要实例化的JavaBean类,然后使用id来标识该实例,type属性用来指定该实例化的JavaBean类将要实现的一个接口或者一个超类;scope属性可以用来指定该JavaBean实例能够关联到多个页面。

<jsp:useBean>标准动作元素中使用的属性如下:

·         id:给一个类实例取名并作为整个jsp页面的唯一标记,如果需要创建一个新的JaveBean实例,这也是引用这个新JavaBean实例的名称

·         class:这是jsp页面引用javaBean组件的完整Java类名(一定要包括包名).如果容器没有找到指定名的类实例,则会使用这个class属性指定的完整类名来创建一个新的JavaBean实例进行引用

·         type:此属性告诉容器这里的JavaBean实例需要实现一个Java接口,或者JavaBean实例需要扩展一个超类,再翻译阶段会使用到这个属性,type属性不是必须添加,但是必须添加class和type属性中多个一个

·         scope:指定这个JavaBean再哪种上下文内可用,该属性可以取下面的4个值之一:page,request,session,application;page表示该JavaBean只有在当前页面内可用(保存在当前页面的PageContext内);request表示该JavaBean在当前的客户请求内有效(保存在ServletRequest对象内);session表示该JavaBean对当前httpSession内的所有页面都有效。

三、<jsp:setProperty>标准动作

使用<jsp:setProperty>动作可以修改JavaBean实例种的属性变量,其中可以有两种使用形式:

1.  <jsp:setProperty>标准动作嵌入在<jsp:useBean>标准动作的体内,但这时只能在JavaBean被创建的实例中执行,使用形式如下:

1.  <jsp:useBean id=”myName” …>

2.  <jsp:setProperty name=”myName” property=”someProperty”…/>

3.  </jsp:useBean>

2.  在<jsp:useBean>动作的后面使用<jsp:setProperty>标准动作元素,使用形式如下:

1.  <jsp:useBean id=”myName” …/>

2.  <jsp:setProperty name=”myName” property=”someProperty”…/>

代码说明: 不管指定的JavaBean是新创建的还是直接使用的实例,在<jsp:useBean>动作之后使用的<jsp:setProperty >标准动作都会被执行。其中<jsp:setProperty >共有4个属性可以选择设置:

1.  name:这个属性是必须设置的,因为通过这个属性才能知道针对哪个JavaBean实例的属性进行设置;

2.  property:也是必须设置的,它告诉容器需要对JavaBean实例中的哪些属性进行设置,这里有个特殊的用法,就是把property属性设置为”*”,该设置表示所有名字与JavaBean属性名字匹配的请求参数都被传递给相应属性的set方法;

3.  value:这个属性是可选的,指定JavaBean属性的值;

4.  param:这个属性和value属性不能同时使用,二者之间只能使用一个,当两个属性都没有在<jsp:setProperty >动作中指定时,指定的属性变量将使用JavaBean中的默认值(例如构造函数中的默认值),如果使用param属性,容器就会把property指定的属性变量设置为param指定的请求参数的值。

四、<jsp:getProperty>标准动作

该标准动作与前一个<jsp:setProperty >标准动作相对应,用来提取指定的JavaBean属性值,然后转换成字符串输出,该动作有两个必须要设置的属性:

1.  name:表示JavaBean在jsp中的标记;

2.  property:表示提取JavaBean中哪个属性的值。

使用例子:

1.  … …

2.  <html>

3.  <body>

4.  <!—定义一个类实例,以testBean作为标记,并给message属性赋值”hello” -- >

5.  <jsp:useBean id=”testBean” class=”com.helloworld.SimpleBean”>

6.  <jsp:setProperty name=”testBean” property=”message” value=”Hello”/>

7.  </jsp:useBean>

8.  <H1>通过<jsp:getProperty>动作得到message属性值:</H1>

9.  <I><jsp:getProperty name=”testBean” property=”message”/></I>

10.<! – 重新给message赋值 -- >

11.<jsp:setProperty name=”testBean” property=”message” value=”hello World”/>

12.<! – 利用EL表达式获取message的值 -- >

13.${testBean.message}

14.</body>

15.</html>

1.  -----------------JavaBean--------

2.  Package com.helloworld:

3.  Public class SimpleBean{

4.  Private String message=””:

5.  Public String getMessage(){

6.  Return this message:

7.  }

8.  Public void setMessage(String message){

9.  This.message=message:

10.}

11.}

五、引用外部文件的标准动作<jsp:include>

该标准动作与前面介绍的include指令方法非常类似,也是将特定的外在文件插入到当前页面中,其使用语法如下:

<jsp:include page=”…url…” flush=”true|false”/>

该标准动作还可以包含一个体,具体形式如下:

<jsp:include page=”…url…” flush=”true|false”/>

<jsp:param …/>

</jsp:include>

通过在<jsp:include>动作体中使用<jsp:param>动作,可以用来指定jsp页面中可用的其他请求参数,之后可以在当前的jsp文件以及引用的外在文件中使用这些请求参数。

在这着重说明就是<include>指令与<jsp:include>动作存在的差异。Include指令是在jsp翻译时进行文件的合并,然后对合并的整体文件进行编译;而<jsp:include>标准动作则首先进行自身的翻译和编译,然后在用户请求阶段进行二进制文件的合并。

六、进行请求转移的标准动作<jsp:forward>

<jsp:forward>标准动作把请求转移到另外一个页面,这个标准动作只有一个属性page,page属性包含一个相对url地址,如:

<jsp:forward page=”/utils/errorReporter.jsp”/>

<jsp:forward page=”<%=someJavaExpression %>” />

第一行的page值是直接给出的,第二行的<jsp:forward>标准动作中的page值是在请求时动态计算的。

七、

参数设置的标准动作<jsp:param>

该<jsp:param>标准动作一般与<jsp:include>以及<jsp:forward>等配套使用,用来进行参数的传递,其一般形式如下:

<jsp:param name=”…名称…” value=”…值…”/>

每个<jsp:param>标准动作都会创建一个即有名又有值的参数,这样可以通过<jsp:include>标准动作所包含的外在文件以及通过<jsp:forward>转移到另外页面,都可以使用这些参数,如:

1.  <html>

2.  <body>

3.  <jsp:include page=”date.jsp”>

4.  <jsp:param name=”serverName” value=”zzb”/>

5.  </jsp:include>

6.  </body>

7.  </html>

则说明在请求时所包含的date.jsp文件可以使用通过<jsp:param>标准动作定义的serverName参数。

八、处理插件的标准动作

·         <jsp:plugin>:用于指定在客户端运行的插件

使用<jsp:plugin>标准动作可以在页面程序中插入一个java插件,一般为java applet小程序(也可以是任何javaBean类),它随着页面程序一起传输到客户端,并且在客户端运息, <jsp:plugin>标准动作的一般使用形式如下:

<jsp:plugin type=”…applet 或者 JavaBean…” code=”…” codebase=”…” archive=”…” …>

</jsp:plugin>

在该动作中可以设置多个属性,其中大部分是<object>或者<EMBED>标记的HTML属性,如:name,code,codebase,archive,align,width,height,jreversion,title等.其中type属性用来指定该插件是applet小程序还是JavaBean类。

·         <jsp:params>:用于向引用的插件传递参数值,一般包含在<jsp:plugin>动作体内

<jsp:params>标准动作的体由多个<jsp:param>动作组成,并且该标准动作只能使用在<jsp:plugin>标记的体中,一般使用形式如下:

1.  <jsp:plugin type=”…applet|JavaBean…” code=”…” …>

2.  <jsp:params>

3.  <jsp:param …/>

4.  <jsp:param …/>

5.  …

6.  </jsp:params>

7.  </jsp:plugin>

说明:<jsp:params>动作体中包括多个<jsp:param>动作来给插件类中的属性变量赋值,每一个<jsp:param>给运行在客户端的插件传递一个参数

·         <jsp:fallback>标准动作

该标签是与<jsp:plugin>标准动作配合使用的,它告诉客户端浏览器当客户端不支持该插件运行时将要显示的HTML页面或者jsp代码,以下是该标准动作的一般使用形式:

<jsp:fallback>

…客户端浏览器不支持插件运行时显示html或者jsp代码…

</jsp:fallback>

说明:体中嵌入的代码只有在客户端不支持该插件运行时才被执行。

转载于:https://blog.51cto.com/xyz00zyx/1164875

JSP基础(5)-JSP标准动作相关推荐

  1. 大数据WEB阶段(十三)JSP(一)JSP基础、JSP指令详解、四大域九大隐式对象总结

    JSP基础.指令.四大作用域九大隐式对象总结 (一)JSP基础 一.JSP概述 jsp其实是java动态页面技术 HTML可以用来组织页面但是HTML是一种静态web资源技术无法嵌入动态数据. Ser ...

  2. [Servlet 1] JSP基础知识

    在之前学习过python web后并实践了一个项目后(目前我也在使用django + bootstrap在独立开发部署一个管理系统,有望可以开源放到gitee/github供大家学习参考与交流) 下面 ...

  3. JSP基础--动作标签

    JSP基础--动作标签 JSP动作标签 1 JSP动作标签概述 动作标签的作用是用来简化Java脚本的! JSP动作标签是JavaWeb内置的动作标签,它们是已经定义好的动作标签,我们可以拿来直接使用 ...

  4. java中jsp标准动作_JavaBean和jsp标准动作

    一.JavaBean 1.理解:可以重用的java类 2.分类 1)封装数据的bean(相当于实体类) 2)封装业务的bean(一般就是实现增删改查) 3.注意: 1)封装数据的bean一般要满足如下 ...

  5. jsp脚本、jsp标准动作、EL表达式、JSTL标签

    https://blog.csdn.net/gx_hxl/article/details/79032331 https://blog.csdn.net/a731604348/article/detai ...

  6. JSP基础语法-动作(Action)

    JSP基础语法 3.6.动作(Action)       动作的语法格式:    <jsp:动作名称  属性名=属性值.... ></jsp:动作名称> 3.6.1.forwa ...

  7. J2EE基础之JSP

    J2EE基础之JSP 1.JSP简介 JSP是JavaServer的缩写,是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.在HTML文件中加入Java程序代码 ...

  8. jsp基础、el技术、jstl标签、javaEE的开发模式

    一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...

  9. HTML基础和JSP了解及JSP中代码加载顺序

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  10. javaweb_笔记2(Servlet源码分析;request详解;请求域;转发和重定向;WebServlet注解;jsp基础语法,JavaBean。)

    1.HttpServlet源码分析 HttpServlet类是专门为HTTP协议准备的.比GenericServlet更加适合HTTP协议下的开发. HttpServlet在哪个包下? jakarta ...

最新文章

  1. linux大爱版本Vinux 盲人也能用的OS
  2. golang中的信号
  3. Python 抖音用户粉丝(公开)--分析与实现
  4. 架构师速成8.3-架构师必须要了解的规则(转)
  5. python关键字as_python 之 import、from、as 关键字的 白话 解释与例子
  6. 独立版Jexus配置SSL,支持https访问
  7. 图解集成学习中的梯度提升思想
  8. Spring Data Redis实战之提供RedisTemplate
  9. 华为鸿蒙11什么时候发布,原创 华为EMUI11正式发布,今年12月可升级为鸿蒙OS2.0国产操作系统...
  10. C#反编译工具Reflector.exe教程
  11. python语义网络图_语义网络 (Knowledge Graph)知识图谱
  12. 西门子g120变频器接线图_西门子1500PLC通过工艺对象对G120变频器组态和调试
  13. SAS笔记#通过TABULATE过程制作汇总报表
  14. 如何提高matlab的运算速度慢,如何提高 matlab 计算速度 运算效率
  15. Wox自制主题 - Material
  16. 代码评审的价值和规范
  17. 什么是 HTTP Headers?
  18. myFAX传真服务器
  19. connect() failed (111: Connection refused) while connecting to upstream 解决方法
  20. MySQL + Oracle GoldenGate + OGG Application Adpater

热门文章

  1. shell习题第8题:监控nginx的502状态
  2. 【LOJ】 #2025. 「JLOI / SHOI2016」方
  3. stm32中断 抢占优先级 和 响应优先级 有什么区别
  4. .Net_asp.net页面的生命周期
  5. C#操作excel(NPOI篇)
  6. Java学习笔记之---集合
  7. SpringBoot数据访问-------------数据缓存
  8. vue.js的ajax和jsonp请求
  9. 变量作用域、声明提前、作用域链
  10. oracle高效分页存储过程(百万数据级)