JSP程序设计实训(五)——JSP基本语法(二)

上一篇:JSP程序设计实训(五)——JSP基本语法(一)

JSP基本语法

  • JSP基本语法的学习包括JSP页面的基本结构、JSP的脚本元素、JSP的指令和JSP的常用动作。
4. JSP常用动作
  • 当客户请求JSP页面时,可以利用JSP动作动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面。动作元素名和属性名都是大小写敏感的。JSP规范定义了一系列标准动作,使用 jsp 作为前缀。其中常用的动作有<jsp:param>、<jsp:include>、<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>、<jsp:forward>

(1)<jsp:param>动作

  • <jsp:param>动作可以用于<jsp:include>、<jsp:forward>动作体中,为其它动作传送一个或多个参数。<jsp:param>动作的语法格式为:<jsp:param name = "参数名" value = "参数值"/>
name属性name属性用于指定参数名称,不可以接受动态值
value属性value属性用于指定参数值,可以接受动态值

(2)<jsp:include>动作

  • <jsp:include>动作用来把指定文件动态插入正在生成的页面中。该动作的语法格式为:<jsp:include page = "文件名" flush = "true"/>或者为
<jsp:include page = "文件名" flush = "true">
	<jsp:param name = "参数" value = "参数值"/>
</jsp:include>
page属性page属性指定所包含资源的相对路径,可以接受动态值
flush属性flush属性指定在包含目标资源之前是否刷新输出缓冲区,默认值为false,不可以接收动态值
  • <jsp:include>动作允许包含静态文件和动态文件,这两种包含文件的效果是不同的。如果包含文件是静态文件,那么这种包含仅仅是把包含文件的内容添加到JSP文件中去,这个文件不会被JSP编译器执行;如果包含文件是动态的,那么这个被包含文件也会被JSP编译器执行。

  • include 指令和 include 动作都能实现将外部文档包放到JSP文档中的功能,名称相似,但也有区别。如下:

    include 指令include 指令可以在JSP页面转换成Servlet 之前,将JSP代码插入其中
    include 动作include 动作是当主页面被请求时,将其他页面的输出包含进来
    区别根本不同在于它们调用的时间,动作是在页面请求间被激活,指令是在页面转换期间被激活。动作比指令容易维护,指令比动作的功能更强大、执行速度也稍快

(3)<jsp:useBean>动作

  • <jsp:useBean>动作用来加载在JSP页面中使用到的JavaBean。这个功能能实现JavaBean组件的重用。<jsp:useBean>动作的语法格式为:<jsp:useBean id="Bean实例名称" scope="page|request|session|application" class="JavaBean类" type="对象变量的类型" beanName = "Bean名字"/>

3.1:id 属性

  • id 属性指定该 JavaBean 的实例名称,不可接受动态值。如果能够找到 id 和 scope 相同的 Bean 实例,<jsp:useBean>动作将会使用已有的 Bean 实例而不是创建新的实例。

3.2:scope 属性

  • scope 属性指定Bean的作用域,一个作用域内 id 属性的值是唯一的,即一个作用域内不能有两个一样的 id 值,不可以接受动态值,可选作用域有 page、request、session 和 application。
  • 默认值是 page ,表示该 Bean 只在当前页面内可用(保存在当前页面的 PageContent 内);request 表示该 Bean 在当前的客户请求内有效(保存在 ServletRequest 对象内);session 表示该 Bean 对当前 HttpSession 内的所有页面都有效,即会话作用域;application 表示该 Bean 在任何使用相同的 application 的JSP页面中有效,即整个程序范围内有效。

3.3:class 属性

  • class 属性指定 Bean 的类路径和类名,不可接受动态值,这个 class 不能是抽象的。

3.4:type 属性

  • type 属性指定应用该对象的变量的类型,它必须是 Bean 类的名字、超类名字、该类所实现的接口名字之一。变量的名字是由 id 属性决定的。

3.5:beanName 属性

  • beanName 属性用于指定 Bean 的名字,可以接受动态值。beanName 属性必须与 type 属性结合使用,不能与 class 属性同时使用。举个例子:
<body>
	<hr>
	<jsp:useBean id = "time" type = "java.io.Serializable" beanName = "java.util.Date"/>
	现在时间:<%=time%>
	<hr>
</body>

(4)<jsp:setProperty>动作

  • <jsp:setProperty>动作用来设置、修改已实例化 Bean 中的属性值。该动作的语法格式为:<jsp:setProperty name = "Bean的名称" property = "*"|property = "属性"[param = "属性"|value = "值"]/>

4.1:name 属性

  • name 属性是必需的,表示要设置的是哪个 Bean 的,不可接受动态值。

4.2:property 属性

  • property 属性是必需的。表示要设置哪个属性。如果 property 的值是 *,表示所有的名字和 Bean 属性名字匹配的请求参数都将被传递给相应属性的 set 方法。

4.3:param 属性

  • param 属性是可选的。指定用哪个请求参数作为 Bean 属性的值。如果当前请求没有参数,则什么事情也不做,系统不会把 null 传递给 Bean 属性的 set 方法。因此,可以让Bean自己提供默认属性值,只有在请求参数明确指定了新值时才修改默认属性值。
<body>
	<hr>
	<jsp:useBean id = "time" class = "java.util.Date">
		<jsp:setProperty name = "time" property = "hours" param = "hh"/>
		<jsp:setProperty name = "time" property = "minutes" param = "mm"/>
		<jsp:setProperty name = "time" property = "seconds" param = "ss"/>
	</jsp:useBean>
</body>

4.4:value 属性

  • value 属性是可选的。该属性用来指定 Bean 属性的值。value 和 param 不能同时使用,但可以使用其中任意一个。

(5)<jsp:getProperty>动作

  • <jsp:getProperty>动作获取指定的 Bean 属性值并转换成字符串输出。该动作的语法格式为:<jsp:getProperty name = "Bean 的名称" property = "Bean 的属性">
  • 该动作可以获取 Bean 的属性值,并可以将其使用或显示在JSP页面中。在使用该动作之前,必须用<jsp:useBean>创建实例化对象。

5.1:name 属性

  • name 属性指定要获取的 Bean 名称,不能接受动态值。

5.2:property 属性

  • property 属性指定要获取的 Bean 属性名,不能接受动态值。

5.3:举个例子

(6)<jsp:forward>动作

  • <jsp:forward>动作用于转发客户端的请求到另一个页面或者另一个Servlet 文件中去。该动作的语法格式为:<jsp:forward page = "地址或者页面"/>
  • <jsp:forward>动作可以包含一个或多个<jsp:param>子动作,用于向要引导进去的页面传递参数。当<jsp:forward>动作发生时,如果已经有文本被写入输出流而且页面没有设置缓冲,将抛出异常。
  • page 属性指定资源的相对路径,可接受动态值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值