在JSP内嵌入大量的Java代码可能会造成维护不方便。为此最好的方就是把JSP代码和Java代码分开,将JSP中的Java代码移植到Java类中。这些可能用到的类就是JavaBean。
JavaBean实现步骤如下:
1.在src中新建一个beans包,建立相应的Java类,编写相应的JavaBean实例。
package lesour.beans;
public class Account {
private String username;
private String password;
private String sex;
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;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
2.在JSP中使用<jsp:useBean>标签来实例化JavaBean的对象。
<%@ page language="java" import="java.util.*" contentType="text/html; cahrset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="lesour.beans.Account" %>
<html>
<body>
<h2>Hello World!</h2>
<jsp:useBean id="account" class="lesour.beans.Account"></jsp:useBean>
<%
account.setUserName("李华");
account.setSex("男");
account.setPassword("123456789");
%>
姓名:<%=account.getUserName() %><br>
性别:<%=account.getSex() %><br>
密码:<%=account.getPassword() %><br>
</body>
</html>
运行结果如下。
<jsp;useBean>的基本用法如下所示
<jsp:useBean id="IdName" class="package.class" scope="page|session|application..."></jsp:useBean>
id属性的作用是指定JavaBean对象的名称,类似于 Account account = new Account() 中的account。
class属性是指定用哪个类来实例化JavaBean对象。
scope属性是指定对象的作用范围,scope范围有以下几种选择。
范围 | 说明 |
---|---|
page | 只是在实例化的页面上可用,别的页面不可用 |
request | 除了在实例化的页面上可用外,还可以在通过forward方法跳转的页面中被认识到 |
session | 表示JavaBean可用存在session中,可以被同一个用户一次会话的所有页面识别到 |
application | 表示JavaBean可用存在application中,可以被所有用户的所有页面识别到 |
使用<jsp:setProperty>设置JavaBean属性
<%
account.setUserName("李华");
account.setSex("男");
account.setPassword("123456789");
%>
上面代码,这种方法设置JavaBean属性还是在JSP中使用Java代码。使用<jsp:setProperty>标签设置JavaBean属性的语法如下
<jsp:setProperty property="属性名称" name="bean对象名" value="常量"/>
如果<jsp:useBean>标签的scope属性是request,<jsp:setProperty>标签的语法如下
<jsp:setProperty property="属性名称" name="bean对象名" param="参数名"/>
上面的JSP代码还可以改为
<jsp:setProperty property="userName" name="account" value="李华"/>
<jsp:setProperty property="sex" name="account" value="男"/>
<jsp:setProperty property="password" name="account" value="123456789"/>
注意:Bean属性名称是按照getter/setter来匹配的而且以小写字母开头,但是在getter和setter中显示为大写名称setUserName()、setSex()。
如果将上面代码第一行改为
<jsp:setProperty property="username" name="account" value="李华"/>
则会报错
除此之外
姓名:<%=account.getUserName() %><br>
性别:<%=account.getSex() %><br>
密码:<%=account.getPassword() %><br>
这段代码<%=account.getUserName() %>也属于Java代码,也可以<jsp:gettProperty>标签来分离JSP代码的Java代码。<jsp:getProperty>标签使用方法和<jsp:setProperty>标签类似。同样要注意属性的大小写。
最终JSP代码将改为
<%@ page language="java" import="java.util.*" contentType="text/html; cahrset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="lesour.beans.Account" %>
<html>
<body>
<h2>Hello World!</h2>
<jsp:useBean id="account" class="lesour.beans.Account"></jsp:useBean>
<jsp:setProperty property="userName" name="account" value="李华"/>
<jsp:setProperty property="sex" name="account" value="男"/>
<jsp:setProperty property="password" name="account" value="123456789"/>
姓名:<jsp:getProperty property="userName" name="account"/><br>
性别:<jsp:getProperty property="sex" name="account"/><br>
密码:<jsp:getProperty property="password" name="account"/><br>
</body>
</html>