上接前一日

--------------------------------------------------

12.JSP指令元素

JSP指令元素是JSP非常重要的组成部分。指令元素有三个,page、include和taglib,指令元素的语法格式为<%@ ************** %>,使用JSP指令元素可以设定JSP网页属性、描述网页信息等,下面针对三个指令元素进行详细的讲解:

12.1 page元素:初始化JSP网页的属性,其语法结构为

<%@ page attribute = "value" attribute2 = "value2"...%> 

page元素的作用范围是整个JSP页面,因此可以把该元素放置在页面上任何位置,但是为了保证可读性,建议将其放置在文件顶部。

page元素主要有13个属性,详见下表:(该表最初的总结整理来源于 白广元等编著的《Java Web整合开发完全自学手册:Struts + Hibernate + Spring + Eclipse》page 23 在此谢谢白老师的总结和整理

属性 定义 默认值
language = "scriptingLanguage" 指定JSP服务器编译JSP网页的编译语言 目前只支持JAVA语言
extends = "className" 定义JSP页面产生的Servlet继承哪个父类
import = "importList" 定义JSP页面引用的其他Java API
session = "true | false" 是否使用session对象 true
Buffer = "none | size inkb" 决定输出流 (Out Stream) 是否有缓冲区 8KB
autoFlush = "true | false" 决定输出流的缓冲区是否需要自动清除,缓冲区满了会产生异常(Exception) true
isThreadSafe ="true | false" 多线程、并发设置,也就是告诉JSP服务器是否可以处理一个以上的请求 true
Info = “text”  JSP网页相关信息
errorPage = "error_url" JSP页面异常后网页会被重定向到哪一个URL
isErrorPage = "true | false" 表示此JSP网页是否为处理异常错误的页面 false
contentType = "ctinfo" 表示MIME类型和JSP网页的编码方式
pageEncoding = "ctinfo" 设置JSP网页编码方式
isELIgnored = "true | false" 设置JSP网页是否忽略EL表达式 false 

提醒:1.session,session这个概念在计算机网络中极为重要,一般称为:会话。

计算机专业术语的Session:指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间,这个期间可以包括许多操作。

Web中的Session:指用户浏览网站时,从进入网站到浏览器关闭所经过的这段时间,综上所述,Session实际上是一个特定的时间概念。(因此,Session的概念需要包括客户端,服务器端以及不中断的操作时间。也就是每个客户端都会同服务器端建立单一的session,例如:A用户和C服务器建立连接时所处的Session同B用户和C服务器建立连接时所处的Session是两个不同的Session。) --在JSP中 session的具体工作原理将会在后续的专题中进行讲解和分析,在此不再叙述。

2.MIME(Multipurpose Internet Mail Extensions):多用途互联网邮件扩展类型,就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

3.import属性可以使用多次,其他属性只能使用一次。

12.2 include元素:该元素用于向某JSP页面插入其他JSP文件的HTML文本和JAP代码等,在编译JSP网页时,服务器会将相关的JSP页面粘合在一起,然后统一进行编译。在这里需要注意,如果include进来的JSP页面上拥有相同的JAVA变量或者函数定义,那么合并后编译会报错,HTML标签也同样会相互影响,因此,要避免片段文件中有<html>、<body>之类的全局标签出现。

该元素只有一个属性,其语法结构为: <%@ include file = "relativeURL" %>

12.3 taglib元素,能够让用户自定义新的标签。(后续会讲解如何自定义标签,如何使用自定义标签

该元素的语法为: <%@ taglib uri = "tagLibraryURI" prefix = "tagPrefix"%>

uri 说明taglibrary的存放位置

prefix 用来区分多个自定义标签

13.JSP动作元素 或者叫 动作标签、动作指令

JSP动作元素是JSP自带的标准标签库,该库利用XML语法格式的标记来控制JSP服务器的行为。利用JSP动作元素可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生产HTML代码。该元素的整体语法格式为 : <jsp:xxx > xxxxxxxxx </jsp>

JSP中,标准动作元素包括

                                 <jsp:include>:动态插入文件标签

                                 <jsp:param>:KYE/VALUE标签

                                 <jsp:forward>:跳转标签

                                 <jsp:useBean>:JavaBean标签

                                 <jsp:setProperty>:设置JavaBean属性标签

                                 <jsp:getProperty>:读取JavaBean属性标签

                                 <jsp:plugin>:插件标签

                                 <jsp:fallback>:报错标签

                                 <jsp:element>:元素标签(jsp2.0)

                                 <jsp:attribute>:属性标签(jsp2.0)

                                 <jsp:body>:body标签(jsp2.0)

 13.1 <jsp:include>:动态插入文件标签,该标签的作用是把文件或表达式代表的文件插入到正在生成的JSP页面中去,这里的动态插入与<%@ include %>这种静态引入文件的方式不同,不同点如下:

           13.1.1引入文件的时间不同:静态引入是在JSP文件被转换成Servlet的时候进行的,动态引入是在页面被请求的时候进行的。

           13.1.2引入文件的内容和格式不同:静态引入的文件内容和格式是JSP网页片段,而动态引入的则是完整的JSP文件,JSP服务器会结合客户端请求将两个JSP文件分别转化为不同的Servlet,此处的变量名、方法等都是可以重复的。

           13.1.3引入文件的效率不同:静态的会快一些。

            13.1.4引用文件名的方式不同:相比静态引用文件,动态引用文件的文件名可以是一个变量或表达式。

            13.1.5编译范围不同:动态引用文件会单独编译相关的文件,不会进行整体编译。

该标签的语法为:<jsp:include page = "relative URL" flush = "true | false"/> , flush = true 表示缓冲区满时会自动情况(默认为false)。

 13.2 <jsp:forward>:跳转标签,该标签的作用是把请求转到其他页面,语法为 <jsp:forward page = "relative URL" />,其中page的参数值可以为表达式,比如,<jsp:forward page = "<%=javaExpression%>" />

     13.3 <jsp:useBean>:JavaBean标签,<jsp:setProperty>:设置JavaBean属性标签,<jsp:getProperty>:读取JavaBean属性标签。

            这一组标签恐怕是JSP中最重要的一组标签了,通过装载JavaBean,实现对于JavaBean的操作和JAVA组件的重用(POJO),同时也避免了JSP实例化对象的复杂度。下边是这三个标签的语法:

             13.3.1 <jsp:useBean id = "name" class = "package.classpage.classname"> ,由于参数较多,因此整理到下表:

属性 属性描述 初始值
id 命名引用该JavaBean的变量,如存在id和scope相同的JavaBean实例,则使用已有实例,不会重新创建实例  
class = "package.classpage.classname"  指定JavaBean的完整路径名(包结构)  
scope=“scopeType” 指定JavaBean可以在那种上下文中使用,标准属性值有4个,分别是:
page、request、session 和 application
page
type="TypeName" 指定引用该对象的变量类型  
beanName = "BeanName" 制定JavaBean的名字,如果提供type和beanName属性,允许省略class属性  

             13.3.2 <jsp:setProperty name = "BeanName" property = "property" value = "value">

属性 属性描述
name 表示要设置属性的BeanName
property 属性名
value 属性值
param 指定用哪个请求参数作为Bean属性的值

注意:用来设置已经实例化的Bean。value和param 不能同时使用。


             13.3.3 <jsp:getProperty name = "BeanName" property = "property">

属性 属性描述
name 表示要设置属性的BeanName
property 属性名

注意:该标签提取指定Bean属性的值。

             13.3.4 下面给大家写个简单的例子展示一下jsp:useBean的用法,他装载一个Bean,然后设置/读取gossip girl属性

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'gossipTestBean.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><p> TestBean - check </p><br><!-- JavaBean的定义,其中id = test bean 是用来给 其他两个标签中name调用的--><jsp:useBean id = "testbean" class = "nc.ui.test.testbean.CheckBean" /><!-- 设置JavaBean的属性值,其中property 引用的是JAVA类中CheckBean的gossip变量value便是给javabean赋值的值--><jsp:setProperty name = "testbean" property = "gossip" value ="Hello Gossip Girl" /><!-- 获取JavaBean的属性值,其中property 引用的是JAVA类中CheckBean的gossip变量--><jsp:getProperty name = "testbean" property = "gossip" /></body>
</html>
package nc.ui.test.testbean;public class CheckBean {private String gossip = "I am B";public String getGossip() {return gossip;}public void setGossip(String gossip) {this.gossip = gossip;}}

显示的效果如下:

企业软件,WEB和对于他们无限美好的遐想(第五日)--2014-3-14--IT日 + Struts 原理分析 (四)相关推荐

  1. 《企业软件交付:敏捷与高效管理精要》——2.1 引言

    2.1 引言 要了解本书的写作背景,对当前企业软件交付所面临的挑战有一个清晰的概念是很重要的.为了说明这个现状,我现在就举一个企业软件交付机构的例子,讲讲它是如何执行某个企业软件交付项目的.我们首先谈 ...

  2. 开源之旅之开源企业软件采购指南

    开源之旅之开源企业软件采购指南 ( 2006-02-06 10:31:09)   [导读]:从开源数据库.应用服务器,到开源的Web服务器,我们已经带您领略开源软件世界的旖旎风光.此次的"开 ...

  3. 从个人软件到企业软件

    什么是企业软件 还记得我们一开始写程序的时候吗?那还是在学生时代,因为兴趣,或者你做毕业设计的时候,写出几行代码,实现了一个简单的功能,如计算出一个数学结果,或者弹出来一个窗口,你的心情是那么激动,你 ...

  4. 如何实现企业软件的“超级 App 化”?

    Superapp("超级 App")最近甚嚣尘上.在本周正在举行的香港科技周 2022(2022 年 10 月 31 日-11 月 4 日),第一天即专门组织了一个围绕 super ...

  5. 中国企业软件必然革命世界企业软件

    (1)先扯点没用的:宏观经济环境 三架马车:出口.固定资产投资.消费. 我丝毫不怀疑中国会在2035年,GDP超过美国.也就是说,我们总体来说,坐在中国这艘上升发展的飞机上,享受着红利. 一.出口 一 ...

  6. 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践

    这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...

  7. 十把快刀:高效免费的十大企业软件

    温习一下这则家喻户晓的寓言吧:从前,有一个老农民,他有两个儿子.一天,他叫来两个儿子,让他们选一把柴刀上山去砍柴.为了让父亲高兴,大儿子早早上了山,而小儿子则将斧头磨锋利后才上山,最后小儿子挑了两担柴 ...

  8. 传统企业软件的互联网化

    文 / 池建强 在我个人长达十几年的IT从业过程中,一直从事软件产品和服务的研发.我有幸经历了第一波互联网浪潮,现在又正值IT技术发展的黄金时 期,无论是传统企业软件,还是互联网服务,都在高速发展.这 ...

  9. 抓住机遇 扶摇直上三千尺:中国企业软件的大风口

    我老说两句话: 1.没有成功的企业,只有时代的企业 2.科技是第一生产力 诸葛亮有句话说的好:若天下有变.嘿嘿嘿,所以应了<霸王别姬>里老师傅对段小楼程蝶衣说的那句话:你们算赶上好时候了. ...

  10. QEMU 虚拟机管理软件Web版,入门教程

    当代的计算机系统中,虚拟化技术的应用,大大提升计算机的性能效率,减少计算机性能浪费. 在现代的计算机软件中,已经诞生出众多基于虚拟化技术应用的虚拟机软件.vmware.VirtualBox.QEMU. ...

最新文章

  1. python 内置open()函数与os.open()函数的区别(打开文件)
  2. Visual C++——加速键
  3. 玩linux笔记——持续更新
  4. 服务器读取excel文件,作为服务器进程读取Excel文件
  5. Redis与数据库同步问题
  6. 判断字符串中是否含有并一个字符或字符串
  7. java接口构造函数_Java8自定义函数式编程接口和便捷的引用类的构造器及方法
  8. Linux打包压缩解压缩tar、gzip、bzip2
  9. java 项目名命名规范_javaWeb项目命名规范
  10. Android 保持屏幕常亮
  11. “OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  12. BAM MATLAB,最新DEA模型:RAM模型、BAM模型、加权SBM模型、SBM方向性距离模型计算...
  13. Ubuntu操作系统MTK刷机工具失败解决方案
  14. 基于树莓派的智能门禁及3D外壳打印设计
  15. 大数据实战第十二课之-Scala知识05
  16. win10下pyt3.7安装scrapy后cmd运行相关命令SyntaxError: invalid syntax 解决办法
  17. [HTML+Bootstrap+CSS+jQuery] 时差计算器(计算时差、验证格式、当前时间、历史记录……)
  18. 论文笔记:Deep Object Co-Segmentation(ACCV2018)
  19. Unity Flat Shading实现低多边形(low-poly)效果
  20. 2021计算机考研科目时间表,2021计算机考研科目408有哪些?

热门文章

  1. ZZULIOJ1010
  2. SQL常用语句(大全)
  3. 无线通信中的IQ调制,BPSK调制,QPSK调制,16QAM调制的理解
  4. part 8 App电量优化
  5. InVEST实践与进阶及在生态系统服务供需、固碳、城市热岛、论文写作
  6. hot-S22和X参数的原理(转)
  7. 2022SPSSPRO认证杯数学建模B题第二阶段方案及赛后总结:唐宋诗的定量分析与比较研究
  8. QCC3005 实现iphone手机banner显示电量图标【续】
  9. excel宏教程_用Excel做个年会抽奖软件,老板惊呆了!
  10. 【TA-霜狼_may-《百人计划》】图形3.2 混合模式及剔除