JavaBean
- 什么是JavaBean?
JavaBean是Java平台的一种可复用组件,你不用管它多官方的定义,记住这几个特点就行:
- 有一个无参的空构造方法(必须有,不然服务器创建对象会报错)
- 所有属性都是私有的(private),比如
private int id; - 每个属性都要有对应的
getter和setter方法,比如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>
五、答辩/考试高频考点(学生版大白话)
-
什么是JavaBean?你项目里怎么用的?
答:JavaBean就是一个装数据的类,我项目里的Book.java就是,每个属性都有getter/setter,Servlet查到的数据就装进这个对象里,再存到request里传给JSP。 -
EL表达式和Java脚本比有什么好处?
答:EL表达式写起来更简单,页面更干净,而且不会空指针报错,比写<% out.print() %>方便多了。 -
JSTL标签库是干嘛的?你项目里用了哪些?
答:JSTL就是一套JSP标签,用来做循环、判断这些操作,不用写Java脚本了。我项目里用了<c:forEach>循环遍历图书列表,还有<c:if>做价格判断。 -
EL和JSTL是什么关系?
答:EL用来取数据,JSTL用来做逻辑控制,两者配合使用,能让JSP页面里几乎没有Java代码,看起来更清爽。
如果你需要,我可以帮你把JavaWeb图书管理项目的完整三层架构(Servlet+Service+DAO+JSP)流程,用大白话整理成一份答辩稿,直接照着说就行。

浙公网安备 33010602011771号