简介:
JavaBean就是符合某种特定规范Java类。
使用JavaBean可以解决代码的重复编写,减少代码冗余,功能区分明确,提高代码的维护性。
设计原则:
1)提供一个公有的无参构造函数。
2)需要被序列化并且实现了Serializable接口。
3)有一系列可读写属性。
4)getter和setter方法封装属性
eg:
// User.java
public class Users {
private String username;
private String password;
public Users()
{
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
在JSP中使用JavaBean有两种方法:
1.. 在src下按照规则新建一个JavaBean类,然后在WebRoot下对应的jsp文件中,在声明里新建一个JavaBean类,然后赋值、使用。
<body>
<h1>使用普通方式创建javabean的实例</h1>
<hr>
<%
Users user = new Users();
user.setUsername("admin");
user.setPassword("123456");
%>
用户名:<%=user.getUsername() %><br>
密码:<%=user.getPassword() %><br>
</body>
2.. 使用<jsp:useBean>
动作标签,如下useBean动作
与存取JavaBean有关的动作元素:
1. useBean 动作
<jsp:useBean>
标签可以在Jsp中声明一个JavaBean,然后使用。声明后,JavaBean对象就成了脚本变量,可以通过脚本元素或其他自定义标签来访问。
格式:
<jsp:useBean id="标识符(类似于Java中的变量名)" class="java类名(需要将包名一同写入)" scope="作用范围(默认是page)">
其中,根据具体情况,scope的值可以是page,request,session或application。id值可任意只要不和同一JSP文件中其它<jsp:useBean>
中id值一样就行了。
<body>
<jsp:useBean id="myUsers" class="com.po.Users" scope="page" />
<h1>使用useBean动作方式创建javabean的实例</h1>
<hr>
用户名:<%=myUsers.getUsername() %><br>
密码:<%=myUsers.getPassword() %><br>
</body>
2. setProperty 动作
在 <jsp:useBean>
标签主体中使用 <jsp:setProperty/>
标签来调用 setter 方法
3. getProperty 动作
在 <jsp:useBean>
标签主体中使用 <jsp:getProperty/>
标签来调用 getter 方法
<body>
<jsp:useBean id="user" class="com.po.Users" scope="page"></jsp:useBean>
//1.根据表单匹配所有属性
<jsp:setProperty name="user" property="*" />
//2.根据表单匹配指定属性
<jsp:setProperty name="user" property="username" />
//3.手工赋值给属性,与表单无关 /
<jsp:setProperty name="user" property="username" value="zhangsan"/>
<jsp:setProperty name="user" property="password" value="123456"/>
//4.通过url传参给属性赋值
<jsp:setProperty name="user" property="password" param="mypass"/>
用户名:<%=user.getUsername() %> <br>
密码:<%=user.getPassword() %>
</body>
其中第四种方法,param为给password属性起的变量名,在url中要通过设置action:xx.jsp?mypass=xxxx
给属性赋值
JavaBean的四个作用域范围:
- page范围:与当前页面相对应,JavaBean的生命周期存在于一个页面之中,当页面关闭时JavaBean被销毁。
- request范围:与JSP的request生命周期相对应,JavaBean的生命周期存在于request对象之中,当request对象销毁时JavaBean也被销毁。
- session范围:与JSP的session生命周期相对应,JavaBean的生命周期存在于session会话之中,当session超时或会话结束时JavaBean被销毁。
- application范围:与JSP的application生命周期相对应,在各个用户与服务器之间共享,只有当服务器关闭时JavaBean才被销毁。
这4种作用范围与JavaBean的生命周期息息相关,当JavaBean被创建后,通过<jsp:setProperty>
标签与<jsp:getProperty>
标签调用时,将会按照page、request、session和application的顺序来查找这个JavaBean实例,直至找到一个实例对象为止,如果在这4个范围内都找不到JavaBean实例,则抛出异常。