动态标识

   动作标识

                   jsp动作标识是在jsp的请求处理阶段按照在页面中出现的顺序被执行的,用于实现某些特殊用途

                    (如,操作javaBean,包含其他文件,执行请求转发等)的标识。

 

        操作JavaBean的动作标识:

                             有一组用于操作javaBean的动作标识,它们就是创建javaBean实例的动作标识<jsp:useBean > ,

                               读取javaBean属性值的动作标识 <jsp:getProperty > 和设置javaBean属性值的动作标识<jsp:setProperty >。

                     <jsp:getProperty >动作标识用于在jsp页面中创建一个javaBean的实例,

                          并且通过该标识的属性可以指定实例名,实例的范围。如果在指定的范围内已经存在一个指定的

                      javaBean实例,那么将直接使用该实例,而不会再创建一个新的实例。

        创建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中定义的属性名相同,否则不能通过。
<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%--该页面中,添加一个用于收集用户名和用户密码的表单元素--%>
<form name="form1" method="post" action="deal.jsp"> <%-- 将表单的处理页面设置为deal.jsp文件--%>
用户名:<input name="name" type="text" style="password" style="width:120px"><br>
&nbsp;&nbsp;码:<input name="pwd" type="password" style="width:120px" ><br>
<br>
<input type="submit" name="Submit" value="提交">
</body>
</html>

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

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
   <jsp:useBean id="user" scope="page" class="com.wgh.UserBean" type="com.wgh.UserBean">
<jsp:setProperty name="user" property="*"/>
</jsp:useBean>
<%--用于接收Form表单的值,并将值保存到javaBean "UserInfo"--%>
用户名:<%=user.getName() %><br>
密码:<%=user.getPwd() %>
</body>
</html>


    获取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. 使用<jsp:include >动作标识包含的页面可以是动态改变的,它是在jsp文件运行过程中被确定的,

                                       程序执行的是两个不同的页面,即在主页面中声明的变量,在被包含的页面中是不可见的。

 
 
posted @ 2022-09-18 20:41  zjw_rp  阅读(213)  评论(0)    收藏  举报