目录:
1、编写和使用JavaBean
2、获取和修改bean的属性
3、bean的辅助类
4、JSP与bean结合的简单例子
1.1编写JavaBean
编写 JavaBean 指的是编写一个 Java 类,将其属性进行封装,提供公共的 getter、setter 方法,以及无参构造方法,并支持序列化,以便能够在网络传输中进行传递和持久化。
以下是一个简单的 JavaBean 类:
public class User {
private String name;
private int age;
public User() {
}
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;
}
}
1.2保存bean的字节码文件
为了使JSP页面使用bean,Tomcat服务器必须使用相应的字节码文件创建
一个对象,即创建-一个bean。为了让Tomcat服务器能找到字节码文件,字节码文
件必须保存在特定的目录中。
ch5\WEBINF\classes目录下,根据包名对应的路径,在classes目录下再建立相应的子目录。例如,包名tom. jiafei对应的路径是tom\jiafei,那么在classes目录下建立子目录结构tom\二、获取和修改bean的属性
将创建bean的字节码文件,例如Circle. class,复制到\ WEB INF\classes\tom\jiafei中。为了调试程序方便,可以直接按照bean的包名将bean的源文件(例如Circle.java)保存在\ WEB INFlclasses\tom\jiafei目录中,然后用命令行进入tom\jiafei的父目录classes(不要进人tom或jiafei目录)编译Circle. java:
classes > javac tom\jiafei\Circle. java
1.3创建与使用bean
创建和使用 bean 需要在 JSP 页面中定义该 bean 的 useBean 标签,通常包括 id、class 和 scope 属性。其中 id 属性指定 bean 对象的名称,class 属性指定 bean 的完整类名,scope 属性指定 bean 对象的作用域。使用 jsp:setProperty 标签设置 bean 的属性值,使用 jsp:getProperty 标签获取 bean 的属性值,并在代码中调用 bean 的方法进行业务逻辑处理。
二、获取和修改bean的属性
1、getProperty动作标记
使用getProperty动作标记可以获得bean的属性值,并将这个值用串的形式发送给用户的浏览器。
<jsp:getProperty name="bean的id " property="bean的属性" />
或
<jsp:getProperty name="bean的id " property="bean的属性">
</jsp:getProperty>
当JSP页面使用getProperty标记获取属性xxx的值时,必须保证bean有相应的getXxx方法,即对方法的名字的命名有特殊的要求。
让request调用setCharacterEncoding方法设置编码为utf-8,以避免显示bean的属性值出现乱码现象
2.setproperty动作标记
setProperty 动作标记用于设置 JavaBean 对象的属性值。该标记通常包括 name、property 和 value 三个属性,其中 name 属性指定 JavaBean 对象的名称,property 属性指定要设置的属性名称,value 属性指定要设置的属性值。 例如,以下是一个使用 setProperty 标记设置 JavaBean 属性值的示例:
<jsp:useBean id="user" class="com.example.User" scope="page" />
<jsp:setProperty name="user" property="name" value="Tom" />
<jsp:setProperty name="user" property="age" value="20" />
在上述示例中,我们使用 useBean 标记创建了一个名为 user 的 JavaBean 对象,并使用 setProperty 标记设置了其 name 和 age 属性值。
三、bean的辅助类
写一个创建bean的类时,除了需要用import语句引入JDK提供的类,可能还需要自己编写一些其他的类,只要将这样类的包名和bean类的包名一致即可(也可以和创建bean的类写在一个Java源文件中)。
package com.example.jsp.utils;
import com.example.jsp.entities.User;
import javax.servlet.http.HttpServletRequest;
/**
* User 实体辅助类
*/
public class UserHelper {
/**
* 获取当前登录的用户
*
* @param request HttpServletRequest
* @return 当前登录的用户,如果未登录则返回null
*/
public static User getCurrentUser(HttpServletRequest request) {
return (User) request.getSession().getAttribute("currentUser");
}
/**
* 判断用户是否已登录
*
* @param request HttpServletRequest
* @return true表示已登录,false表示未登录
*/
public static boolean isLogin(HttpServletRequest request) {
return getCurrentUser(request) != null;
}
/**
* 获取用户的显示名称
*
* @param user User实体
* @return 用户的显示名称,如果为空则返回用户名
*/
public static String getDisplayName(User user) {
if (user.getDisplayName() != null && !user.getDisplayName().isEmpty()) {
return user.getDisplayName();
}
return user.getUsername();
}
}
四、JSP与bean结合的简单例子
下面是一个简单的JSP与JavaBean结合的示例。假设我们有一个名为user的JavaBean,它封装了用户的信息,包括用户名、密码、Email等。我们可以创建一个JSP页面来展示用户的信息,并通过JavaBean来获取用户信息。 User.java:
package com.example.jsp.bean;
public class User {
private String username;
private String password;
private String email;
// 构造函数
public User(String username, String password, String email) {
this.username = username;
this.password = password;
this.email = email;
}
// getter和setter方法
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 getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
user.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.example.jsp.bean.User" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户信息</title>
</head>
<body>
<h1>用户信息</h1>
<%-- 创建一个User对象 --%>
<% User user = new User("Alice", "123456", "alice@example.com"); %>
<p>用户名: <%= user.getUsername() %> </p>
<p>邮箱: <%= user.getEmail() %> </p>
</body>
</html>