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. 畅通工程续(HDU 1874)附上超详细源代码

    Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行 ...

  2. Python: tree data structure

    # 树结构 from pythonds.basic.stack import Stack #pip install pythonds from pythonds.trees.binaryTree im ...

  3. 共用的h5回调页面

    产生背景: APP里的公用页面,像帮助中心页.授权认证结果页.各种协议页面,都需要做成H5页面,方便安卓和ios去调用. 交互情况描述: 要是有动态值,就需要定义在自己H5链接的后面,让他们传值,自己 ...

  4. docker 安装软件

    Docker Docker官方网址: https://docs.docker.com/  英文地址 Docker中文网址: http://www.docker.org.cn/ 中文地址 Docker是 ...

  5. 从零开始学习html(二)认识标签(第一部分)——下

    八.<blockquote>标签,长文本引用 <!DOCTYPE HTML> <html> <head> <meta http-equiv=&qu ...

  6. [VUE ERROR] Invalid prop: type check failed for prop "list". Expected Array, got Undefined

    错误原因: 子组件 props -> list 要求接收的数据类型是 Array, 然而实际接收到的是 Undefined. 子组件代码: props: { list: { type: Arra ...

  7. (网页)12种不宜使用的Javascript语法(转)

    转自阮一峰: 最近写的一些小东西,总是出各种各样的问题,用了angular.js反应居然比我的jQuery还慢,客户吐槽了,我又把一个小操作,改成了jQuery.浏览一下大神的的博客.转载一点东西: ...

  8. android recovery 升级之USB设备挂载

    Recovery升级过程,通常会从两个地方获取升级包update.zip升级,一般在线升级,会把升级包下载到cache分区,本地升级会从usb或者tf卡中升级.本文讨论下,本地USB升级时,无法挂载U ...

  9. Ubuntu16下配置支持Windows访问的samba共享

    一.安装Ubuntu samba服务器 $ sudo apt-get install samba $ sudo apt-get install smbclient # Linux客户端测试用 二.创建 ...

  10. 图解get方法与filter方法

    在django的数据库查找方法中,get与filter方法是查找单目数据,用图记录了这两个方法查找数据各自返回的是什么?