《JavaWeb期末复习指导》是一本专为学习JavaWeb技术的学生设计的复习资料,涵盖了从基础知识到高级应用的内容,帮助学生高效准备考试。
### JavaWeb期末复习知识点
#### 一、编写与数据表对应的实体类
在JavaWeb开发中,实体类(Entity)通常用于表示数据库中的一个表。此类需具备与表字段相对应的属性,以及对应的getter和setter方法。这些实体类便于在程序中处理数据库的数据。
**示例代码:**
```java
package com.lncc.beans.bean;
public class Customer {
private int id;
private String username;
private String password;
private String gender;
private String email;
private String telephone;
private String introduce;
private String activeCode;
private String rode; // 注意拼写错误,应该是role
private int state;
public Customer() {}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
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 getGender() { return gender; }
public void setGender(String gender) { this.gender = gender; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getTelephone() { return telephone; }
public void setTelephone(String telephone) { this.telephone = telephone; }
public String getIntroduce() { return introduce; }
public void setIntroduce(String introduce) { this.introduce = introduce; }
public String getActiveCode() { return activeCode; }
public void setActiveCode(String activeCode) { this.activeCode = activeCode; }
public int getState() { return state; }
public void setState(int state) { this.state = state; }
public String getRode() {
if (rode == null || rode.isEmpty()) {
System.out.println(注意:属性名称拼写错误,应该是 role 而不是 rode);
return ;
} else {
return rode;
}
}
public void setRode(String rode) { this.rode = rode; }
}
```
**注意点:**
- 实体类应放置在`beans`或`model`目录下。
- 使用JavaBean规范命名。
- 包含必要的getter和setter方法。
- 可以包含构造方法和其他辅助方法。
#### 二、编写与实体类对应的数据库操作DAO文件
DAO(Data Access Object)层主要用于实现对数据源(如数据库)的基本操作,例如增删改查等。
**示例代码:**
```java
package com.lncc.dao;
import com.lncc.beans.bean.Customer;
import java.util.List;
public interface CustomerDAO {
Customer findById(int id);
List findAll();
void save(Customer customer);
void update(Customer customer);
void delete(int id);
}
```
**实现类示例:**
```java
package com.lncc.dao.impl;
import com.lncc.beans.bean.Customer;
import com.lncc.dao.CustomerDAO;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import java.util.List;
public class CustomerDAOImpl implements CustomerDAO {
private Session session;
private Transaction transaction;
@Override
public Customer findById(int id) {
session = new Configuration().configure().buildSessionFactory().openSession();
transaction = session.beginTransaction();
Customer customer = session.get(Customer.class, id);
transaction.commit();
session.close();
return customer;
}
@Override
public List findAll() {
// 实现逻辑
return null;
}
@Override
public void save(Customer customer) {
session = new Configuration().configure().buildSessionFactory().openSession();
transaction = session.beginTransaction();
session.save(customer);
transaction.commit();
session.close();
}
@Override
public void update(Customer customer) {
// 实现逻辑
}
@Override
public void delete(int id) {
// 实现逻辑
}
}
```
**注意点:**
- DAO接口定义了基本的操作方法。
- DAO实现类通常使用Hibernate等ORM框架来实现数据的持久化操作。
- 为提高效率,可以考虑使用事务管理。
- 可以使用连接池来管理数据库连接。
#### 三、编写Servlet文件调用DAO中对应的方法获取数据
Servlet是JavaWeb中用于接收HTTP请求并作出响应的一种服务器端技术。
**示例代码:**
```java
package com.lncc.servlet;
import com.lncc.beans.bean.Customer;
import com.lncc.dao.CustomerDAO;
import com.lncc.dao.impl.CustomerDAOImpl;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
public class CustomerServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
CustomerDAO dao = new CustomerDAOImpl();
List customers = dao.findAll();
//