1、概述

JSP规范中定义了一系列的标准动作,Web容器按照规范进行了实现,可以解析并执行标准动作。而标准动作使用的是标准的xml语法,看上去也比较直观易懂,下面来看一个结构例子:
<jsp:action_name attribute1="value1" attribute2="value2"></jsp:acion_name>  
1
 
1
<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>
1
 
1
<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>
1
 
1
<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>
x
 
1
<jsp:forward page="copyright.jsp">
2
    <jsp:param name="author" value="zhangsan"/>
3
</jsp:forward>
4

5
<jsp:include page="head.jsp">
6
    <jsp:param name="time" value="2018-01-30"/>
7
</jsp:include>
8


上述代码使用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>
1
 
1
<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>
1
 
1
<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="" />
1
 
1
<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="" />
 
1
<jsp:getProperty name="" property="" />
getProperty用来调用JavaBean对象的getXxx方法获取对应属性值,其中:
  • name 表示JavaBean对象的id值
  • property 表示JavaBean对象的属性名


4、其他

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


5、写在后面的话

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


[04] JSP标准动作的更多相关文章

  1. jsp标准动作

    JSP标准动作元素的使用格式为:<jsp:标记名>,它採用严格的xml标签语法来表示.这些jsp标签动作元素是在用户请求阶段运行的,这些标准动作元素是内置在jsp文件里的,所以能够直接使用 ...

  2. Java Web程序设计笔记 • 【第4章 JavaBean和JSP标准动作】

    全部章节   >>>> 本章目录 4.1 JavaBean 4.1.1 JavaBean 概述 4.1.2 JavaBean的重要性 4.1.3 JavaBean的特点 4.1 ...

  3. include指令和<jsp:include>标准动作

    利用JSP的包含机制,可以有效的避免重复,把可重用的部分独立出去,使用include把它们包含到当前文件.JSP有两种包含机制:include指令和<jsp:include>标准动作. 1 ...

  4. jsp:useBean标准动作

    1.bean法则 JavaBean和企业JavaBean是完全不相干的两个东西.普通的非企业JavaBean需要满足一定的规范才能被JSP和servlet使用: 1)必须有一个无参数的公共构造函数: ...

  5. JSP 标准标签库JSTL

    JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...

  6. 04 jsp,EL,JSTL

    jsp:Java Server Page  什么是jsp?从用户角度看待 ,就是是一个网页 , 从程序员角度看待 , 其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个Se ...

  7. Spring MVC -- JSP标准标签库(JSTL)

    JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能.JSTL支持通用的.结构化的任务,比如迭 ...

  8. JSP 标准标签库(JSTL)

    JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...

  9. JSP(include指令与<jsp:include>动作的区别)

    <%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...

随机推荐

  1. 教你读懂vue源码技术教程

    由于 Vue 的源码采用 ES6,所以你至少应该掌握 ES6 才能看得懂,其次你最好对 package.json 中的字段的作用有所了解.由于 Vue 使用 Rollup 构建,所以你不了解 Roll ...

  2. 不用Visual Studio,5分钟轻松实现一张报表

    常规的报表设计,如RDLC.水晶报表等,需要安装Visual Studio,通过VS提供的报表设计界面来设计报表,通过VS设计报表对.NET开发者而言非常方便,但是对于非开发人员,要安装4G的一个VS ...

  3. 排错-LR安装No Background bmp defined in ...的解决办法

    LR安装No Background bmp defined in section General entry BGBmp的解决办法 by:授客 QQ:1033553122 问题描述: 我在win7装L ...

  4. python txt文件数据转excel

    txt content: perf.txt 2018-11-12 16:48:58 time: 16:48:58 load average: 0.62, 0.54, 0.56 mosquitto CP ...

  5. JVM vs DVM

  6. JavaScript大杂烩1 - 理解JavaScript的类型系统

    随着硬件水平的逐渐提高,浏览器的处理能力越来越强大,本人坚信,客户端会越来越瘦,瘦到只用浏览器就够了,服务端会越来越丰满:虽然很多大型的程序,比如3D软件,客户端仍然会存在,但是未来的主流必将是浏览器 ...

  7. mysql快速生成truncate脚本清空数据库表记录

    语句格式: select CONCAT('truncate TABLE ',table_schema,'.',TABLE_NAME, ';') from INFORMATION_SCHEMA.TABL ...

  8. 关于web优化(一)

    我们所说的web,无非就是html,css(web font, image),JavaScript. HTML优化建议: 1. 尽量不要用table进行布局. 2. 尽量用最新的带有语义的h5标签,这 ...

  9. mysql的varchar字段可以存储多少个中文字符

    创建数据库,并创建一张表mytb进行测试 ******************************************************************************* ...

  10. [20170628]完善ooerr脚本.txt

    [20170628]完善ooerr脚本.txt --//注意不是oracle的oerr,是我写的一个小脚本,下面会提到.很简单.^_^.--//参考链接:blog.itpub.net/267265/v ...