JavaBean的学习
可以在<jsp:setProperty>中通过param参数为bean的属性动态赋值。
<jsp:setProperty property="age" name="person" param="helloword"/> <br>
<jsp:getProperty property="age" name="person"/>
对应的servlet代码:
org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context.findAttribute("person"), "age", request.getParameter("helloworld"), request, "helloworld", false);
JavaBean的范围:
Scope属性决定了JavaBean对象的存活范围。
scope可选值(page request session application);
page:只能在同一个页面内被转发;客户每次请求访问jsp页面时,都会创建一个JavaBean对象。
page属性生命期结束的标志:
a: 客户请求访问的当前jsp页面通过<forward>标记将请求转发到另一个页面;
b:客户请求访问的当前的JSP页面执行完并向客户端发回响应。
request:在请求对象存活期间,可以访问这个范围内的对象。(客户请求访问的当前jsp页面;和当前jsp页面共享同一个客户请求的页面,包含<%@ include>指令 以及<forward>指令)。
当所有的共享同一个客户请求的JSP页面执行完毕并向客户端返回响应时,JavaBean对象结束生命周期。
session:再回话期间(不关闭这个浏览器),可以访问这个范围的对象。
注意:当JavaBean放在session范围内。
application:在web程序运行期间(服务器不关闭),可以访问这个范围的任何对象。
注意在这个代码中只要不停的换scope="{page,request,session,application}"这几个变量,就能从jsp页面的变化和servlet源代码的变化,体会到这几个属性的不同。
Student.java
package com.javabean.test;
public class Student
{
private long classNo;
private String name;
private int age;
private boolean sexy;
public Student()
{
classNo = 000101;
name = "mingming";
age = 20;
sexy = true;
}
public long getClassNo()
{
return classNo;
}
public void setClassNo(long classNo)
{
this.classNo = classNo;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
this.age = age;
}
public boolean isSexy()
{
return sexy;
}
public void setSexy(boolean sexy)
{
this.sexy = sexy;
}
}
javabean.jsp
<%@ page language="java" import="com.javabean.test.Student"
pageEncoding="UTF-8"%>
<html>
<body>
<%-- 引用自己编写的javaBean生成的bean组件 --%>
<jsp:useBean id="student" scope="page"
class="com.javabean.test.Student" />
<%=student.getName()%><br>
<%
student.setName("hheheh");
%>
<%-- 用getProperty动作来返回bean组件的属性值 --%>
<jsp:getProperty name="student" property="classNo" />
<br>
<jsp:getProperty name="student" property="name" />
<br>
<jsp:getProperty name="student" property="age" />
<br>
<jsp:getProperty name="student" property="sexy" />
<br>
<%-- 取属性值 --%>
<%=student.getClassNo()%>
<br>
<%=student.getName()%>
<br>
<%=student.getAge()%>
<br>
<%=student.isSexy()%>
<br>
<jsp:useBean id="date" class="java.util.Date" scope="application"></jsp:useBean>
<%= date.toLocaleString() %>
</body>
</html>