JavaBean

  1. 什么是JavaBean?
    JavaBean是Java平台的一种可复用组件,你不用管它多官方的定义,记住这几个特点就行:
  • 有一个无参的空构造方法(必须有,不然服务器创建对象会报错)
  • 所有属性都是私有的(private),比如private int id;
  • 每个属性都要有对应的gettersetter方法,比如getId()setId()
  • 最好实现Serializable接口(序列化,写项目时可加可不加,答辩说出来加分)

2. 为什么要用JavaBean?

举个例子,你从数据库查到一条图书数据,有书名、作者、价格、出版日期4个字段。

  • 不用JavaBean:你得把这4个数据分开存,容易搞混,传参也麻烦
  • 用了JavaBean:直接把这4个数据装进Book对象里,一个对象就代表一条数据,传参、存到request里都特别方便

3. 你项目里的Book.java示例

public class Book {
    // 私有属性:对应数据库表的字段
    private int id;
    private String book_name;
    private String author;
    private double price;
    private String publish_date;

    // 无参构造方法(必须有!)
    public Book() {}

    // 全参构造(可选,创建对象时方便)
    public Book(int id, String book_name, String author, double price, String publish_date) {
        this.id = id;
        this.book_name = book_name;
        this.author = author;
        this.price = price;
        this.publish_date = publish_date;
    }

    // 每个属性的getter和setter
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }

    public String getBook_name() { return book_name; }
    public void setBook_name(String book_name) { this.book_name = book_name; }

    // 其他getter/setter省略...

    // 重写toString(可选,打印对象时能看到数据,调试很方便)
    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", book_name='" + book_name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                ", publish_date='" + publish_date + '\'' +
                '}';
    }
}

二、EL表达式:JSP里的“懒人取值神器”

你写的${book.book_name}就是EL表达式,全称是Expression Language,说白了就是专门用来在JSP页面里取数据的语法,比写Java脚本简单10倍。

1. EL表达式是干嘛的?

它的作用就一句话:从request、session这些作用域里把数据拿出来,直接输出到页面上,不用写<% out.print(...) %>这种麻烦代码。

2. 怎么用?

语法超简单:${变量名.属性名}
举个例子:

  • Servlet里把bookList存到了request里:request.setAttribute("bookList", bookList);
  • JSP里取这个集合里的book对象的书名:${book.book_name}

3. 你项目里的实际用法

<c:forEach items="${bookList}" var="book">
    <tr>
        <%-- 用EL表达式直接取对象的属性,不用写Java脚本 --%>
        <td>${book.id}</td>
        <td>${book.book_name}</td>
        <td>${book.author}</td>
        <td>${book.price}</td>
        <td>${book.publish_date}</td>
    </tr>
</c:forEach>

4. 它比Java脚本好在哪?

  • 更简洁:不用写<% %>,代码看起来干净很多
  • 更安全:如果对象是null,它不会抛出空指针异常,只会什么都不显示
  • 不用导包:只要数据存在作用域里,直接就能取,不用写page import

三、JSTL标签库:让JSP页面告别Java脚本

你写的<c:forEach>循环就是JSTL标签,全称是JSP Standard Tag Library,它是一套JSP标准标签库,用来在页面里做循环、判断、格式化这些操作,不用再写Java脚本了。

1. 为什么要用JSTL?

你之前可能写过这种代码:

<% for(Book book : bookList) { %>
    <tr>
        <td><%= book.getBook_name() %></td>
    </tr>
<% } %>

这种Java和HTML混在一起的代码,又乱又难维护。用了JSTL之后,页面里就全是HTML和标签,看起来清爽很多。

2. 怎么用JSTL?

第一步:导入JSTL依赖包

jstl-1.2.jar放到WEB-INF/lib目录下。

第二步:在JSP页面里引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • prefix="c":给标签起个别名,以后用c:开头就能调用标签了
  • uri:标签库的地址,固定写法

第三步:用标签做循环、判断

<%-- 遍历图书列表 --%>
<c:forEach items="${bookList}" var="book">
    <tr>
        <td>${book.id}</td>
        <td>${book.book_name}</td>
        <td>${book.author}</td>
    </tr>
</c:forEach>

<%-- 条件判断:如果价格大于50,标红显示 --%>
<c:if test="${book.price > 50}">
    <td style="color:red;">${book.price}</td>
</c:if>

3. 你项目里最常用的2个标签

标签 作用 示例
<c:forEach> 遍历集合、数组,相当于Java里的for循环 <c:forEach items="${bookList}" var="book">
<c:if> 条件判断,相当于Java里的if语句 <c:if test="${book.price > 50}">

四、结合你的项目:图书列表完整示例

把JavaBean + EL + JSTL结合起来,一个干净的图书列表页面就出来了:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>图书列表</title>
</head>
<body>
    <h2>图书管理系统</h2>
    <table border="1" width="600">
        <tr>
            <th>ID</th>
            <th>书名</th>
            <th>作者</th>
            <th>价格</th>
            <th>出版日期</th>
        </tr>
        <%-- JSTL循环遍历,EL表达式取值 --%>
        <c:forEach items="${bookList}" var="book">
            <tr>
                <td>${book.id}</td>
                <td>${book.book_name}</td>
                <td>${book.author}</td>
                <%-- 条件判断,价格大于50标红 --%>
                <c:if test="${book.price > 50}">
                    <td style="color:red;">${book.price}</td>
                </c:if>
                <c:if test="${book.price <= 50}">
                    <td>${book.price}</td>
                </c:if>
                <td>${book.publish_date}</td>
            </tr>
        </c:forEach>
    </table>
</body>
</html>

五、答辩/考试高频考点(学生版大白话)

  1. 什么是JavaBean?你项目里怎么用的?
    答:JavaBean就是一个装数据的类,我项目里的Book.java就是,每个属性都有getter/setter,Servlet查到的数据就装进这个对象里,再存到request里传给JSP。

  2. EL表达式和Java脚本比有什么好处?
    答:EL表达式写起来更简单,页面更干净,而且不会空指针报错,比写<% out.print() %>方便多了。

  3. JSTL标签库是干嘛的?你项目里用了哪些?
    答:JSTL就是一套JSP标签,用来做循环、判断这些操作,不用写Java脚本了。我项目里用了<c:forEach>循环遍历图书列表,还有<c:if>做价格判断。

  4. EL和JSTL是什么关系?
    答:EL用来取数据,JSTL用来做逻辑控制,两者配合使用,能让JSP页面里几乎没有Java代码,看起来更清爽。


如果你需要,我可以帮你把JavaWeb图书管理项目的完整三层架构(Servlet+Service+DAO+JSP)流程,用大白话整理成一份答辩稿,直接照着说就行。

posted @ 2026-04-24 16:37  忽晚0707  阅读(4)  评论(0)    收藏  举报