第五章.JSP与JavaBean

目录:

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值