动态标识
jsp动作标识是在jsp的请求处理阶段按照在页面中出现的顺序被执行的,用于实现某些特殊用途
(如,操作javaBean,包含其他文件,执行请求转发等)的标识。
操作JavaBean的动作标识:
有一组用于操作javaBean的动作标识,它们就是创建javaBean实例的动作标识<jsp:useBean > ,
读取javaBean属性值的动作标识 <jsp:getProperty > 和设置javaBean属性值的动作标识<jsp:setProperty >。
<jsp:getProperty >动作标识用于在jsp页面中创建一个javaBean的实例,
并且通过该标识的属性可以指定实例名,实例的范围。如果在指定的范围内已经存在一个指定的
javaBean实例,那么将直接使用该实例,而不会再创建一个新的实例。
1.不存在Body的语法格式:
2.存在Body的语法格式:
package com.wgh;
/*
* 创建javaBean的实例,并为各属性赋值
*/
public class UserBean
{
private String name=""; //用户名
private String pwd=""; //密码
//name属性对应的set方法
public void setName(String name)
{
this.name=name;
}
public String getName()
{
return name;
}
public void setPwd(String pwd)
{
this.pwd=pwd;
}
public String getPwd()
{
return pwd;
}
}
注意:表单元素的name属性必须与JavaBean中定义的属性名相同,否则不能通过。
<%
<%
获取javaBean实例各属性的值:
通过jsp:getProperty标识实现。其语法格式如下:
<jsp:getProperty name="JavaBean实例名" property="属性名"/>
name属性:必要属性,用于指定一个jsp范围内的javaBean实例名,该属性的值,
通常与<jsp:useBean >的id属性相同。若任何范围内不存在这个JavaBean实例,则会抛出异常。
property属性:必要属性,用于指定要获取其属性值的javaBean的属性。如果指定的属性为name,
那么在JavaBean中,必须存在一个名称为getName()的方法,否则会抛出异常。
//可以将上面的例子的jsp表达式获取javaBean实例的的属性值的代码,替换成应用<jsp:getProperty>标识获取
用户名:<jsp:getProperty name="user" property="name"/><br>
密码:<jsp:getProperty name="user" property="pwd"/>
动作标识<jsp:include >:
被包含的文件可以是动态文件,也可以是静态文件。
语法格式:
<jsp:include page="url" flush="false|true">
或
<jsp:include page="url" flush="false|true">
子动作标识<jsp:param>
</jsp:include>
page属性:用于指定被包含文件的相对路径。例如,指定属性值为“top.jsp”,
则表示与当前jsp文件相同文件夹中的top.jsp文件包含到当前jsp页面中。
flush属性:可选属性,用于设置是否刷新缓冲区。默认值为false,如果设置true,
在当前页面输出使用了缓冲区的情况下,先刷新缓冲区,然后再执行包含工作。
说明:<jsp:include >标识对包含的动态文件和静态文件的处理方式是不相同的。
如果被包含的是静态的文件,则页面执行后,在使用了该标识的位置将会输出这个文件的内容;
如果<jsp:include >标识包含的是一个动态文件,那么jsp编译器将编译并执行这个文件。
<jsp:include >标识会识别出文件的类型,而不是通过文件的名称来判断该文件是静态的还是动态的。
两种包含文件的区别:
1. 使用<%@ include%>指令包含的页面,是在翻译阶段将该页面的代码插入到了主页面的代码中,
最终包含页面与被包含页面生成了一个文件。如果被包含页面的内容有改变,需重新编译该文件。
2.