用java mysql写一个个人中心,显示购买的票,包括dao层,service层,impl层,view层
时间: 2024-01-05 10:04:06 浏览: 66
好的,下面是一个简单的示例,实现了个人中心页面显示购买的票,包括dao层,service层,impl层,view层的Java代码和MySQL数据库表设计。
首先,我们需要设计MySQL数据库表,例如:
```
CREATE TABLE ticket (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
ticket_name VARCHAR(100),
ticket_price DECIMAL(10, 2),
purchase_date DATE
);
```
这个表用于存储用户购买的票的信息,包括票的名称、价格、购买日期等。
接下来,我们需要创建一个Ticket实体类,用于封装从数据库中查询出来的票的信息:
```java
public class Ticket {
private int id;
private int userId;
private String ticketName;
private BigDecimal ticketPrice;
private LocalDate purchaseDate;
// 省略 getter 和 setter 方法
}
```
接着,我们需要创建一个TicketDao接口,定义了查询用户购买的票的方法:
```java
public interface TicketDao {
List<Ticket> findByUserId(int userId);
}
```
然后,我们创建一个TicketDaoImpl类,实现了TicketDao接口,并且实现了findByUserId方法:
```java
public class TicketDaoImpl implements TicketDao {
private Connection connection;
public TicketDaoImpl(Connection connection) {
this.connection = connection;
}
@Override
public List<Ticket> findByUserId(int userId) {
List<Ticket> tickets = new ArrayList<>();
try (PreparedStatement ps = connection.prepareStatement("SELECT * FROM ticket WHERE user_id = ?")) {
ps.setInt(1, userId);
try (ResultSet rs = ps.executeQuery()) {
while (rs.next()) {
Ticket ticket = new Ticket();
ticket.setId(rs.getInt("id"));
ticket.setUserId(rs.getInt("user_id"));
ticket.setTicketName(rs.getString("ticket_name"));
ticket.setTicketPrice(rs.getBigDecimal("ticket_price"));
ticket.setPurchaseDate(rs.getDate("purchase_date").toLocalDate());
tickets.add(ticket);
}
}
} catch (SQLException e) {
e.printStackTrace();
}
return tickets;
}
}
```
接着,我们创建一个TicketService接口,定义了查询用户购买的票的方法:
```java
public interface TicketService {
List<Ticket> findTicketsByUserId(int userId);
}
```
然后,我们创建一个TicketServiceImpl类,实现了TicketService接口,并且实现了findTicketsByUserId方法:
```java
public class TicketServiceImpl implements TicketService {
private TicketDao ticketDao;
public TicketServiceImpl(TicketDao ticketDao) {
this.ticketDao = ticketDao;
}
@Override
public List<Ticket> findTicketsByUserId(int userId) {
return ticketDao.findByUserId(userId);
}
}
```
最后,我们可以创建一个简单的JSP页面,用于显示用户购买的票的信息:
```jsp
<%@ 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>
<h1>个人中心</h1>
<h2>我的票</h2>
<table>
<tr>
<th>ID</th>
<th>票名</th>
<th>价格</th>
<th>购买日期</th>
</tr>
<c:forEach items="${tickets}" var="ticket">
<tr>
<td>${ticket.id}</td>
<td>${ticket.ticketName}</td>
<td>${ticket.ticketPrice}</td>
<td>${ticket.purchaseDate}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
这个页面使用JSTL标签库来遍历查询到的票的信息,并且显示在页面上。
最后,我们可以创建一个Servlet,用于处理用户访问个人中心页面的请求,并且调用TicketService来查询用户购买的票的信息:
```java
public class PersonalCenterServlet extends HttpServlet {
private TicketService ticketService;
@Override
public void init() throws ServletException {
super.init();
Connection connection = getConnectionFromDataSource(); // 从数据源获取连接
ticketService = new TicketServiceImpl(new TicketDaoImpl(connection));
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int userId = getUserIdFromSession(request); // 从Session中获取用户ID
List<Ticket> tickets = ticketService.findTicketsByUserId(userId);
request.setAttribute("tickets", tickets);
request.getRequestDispatcher("/personal-center.jsp").forward(request, response);
}
// 省略其他方法
}
```
这个Servlet在初始化时,从数据源获取连接,并且创建了TicketServiceImpl对象。在处理用户访问个人中心页面的请求时,从Session中获取用户ID,并且调用TicketService来查询用户购买的票的信息,并且将查询到的票的信息设置为请求的属性,最后转发到JSP页面进行渲染。
以上就是一个简单的个人中心页面显示购买的票的示例,包括dao层,service层,impl层,view层的Java代码和MySQL数据库表设计。
阅读全文