jsp简单购物车连接数据库
时间: 2023-09-02 18:11:53 浏览: 165
jsp 简单 购物车
5星 · 资源好评率100%
首先,你需要创建一个数据库来存储商品和用户信息。可以使用 MySQL 数据库,具体操作如下:
1. 安装 MySQL 数据库,并创建一个名为 `shopping_cart` 的数据库。
2. 在 `shopping_cart` 数据库中创建两个表:`users` 和 `products`。
`users` 表结构如下:
```sql
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
`products` 表结构如下:
```sql
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
接下来,你可以在 JSP 页面中使用 Java 代码连接数据库,并实现简单的购物车功能。具体操作如下:
1. 导入 MySQL 驱动包,可以从 MySQL 官网下载。
2. 在 JSP 页面中使用 Java 代码连接数据库,示例代码如下:
```java
<%@ page import="java.sql.*" %>
<%
String url = "jdbc:mysql://localhost:3306/shopping_cart";
String user = "root";
String password = "root";
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
out.println("数据库连接成功!");
} catch (ClassNotFoundException e) {
out.println("找不到驱动程序类,加载驱动失败!");
e.printStackTrace();
} catch (SQLException e) {
out.println("数据库连接失败!");
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
```
在上面的代码中,首先定义了连接 MySQL 数据库所需的 URL、用户名和密码。然后通过 `Class.forName()` 方法加载 MySQL 驱动程序类,再通过 `DriverManager.getConnection()` 方法获取数据库连接。如果连接成功,将输出 `数据库连接成功!`,否则将输出错误信息。
3. 实现简单的购物车功能,示例代码如下:
```java
<%@ page import="java.sql.*" %>
<%
String url = "jdbc:mysql://localhost:3306/shopping_cart";
String user = "root";
String password = "root";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
// 查询商品列表
pstmt = conn.prepareStatement("SELECT id, name, price FROM products");
rs = pstmt.executeQuery();
while (rs.next()) {
out.println("商品编号:" + rs.getInt("id") + ",商品名称:" + rs.getString("name") + ",商品价格:" + rs.getDouble("price"));
out.println("<a href=\"add_to_cart.jsp?id=" + rs.getInt("id") + "\">加入购物车</a><br>");
}
// 处理购物车操作
String id = request.getParameter("id");
if (id != null) {
pstmt = conn.prepareStatement("SELECT id, name, price FROM products WHERE id = ?");
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
out.println("已加入购物车:" + rs.getString("name") + ",价格:" + rs.getDouble("price") + "<br>");
}
}
} catch (ClassNotFoundException e) {
out.println("找不到驱动程序类,加载驱动失败!");
e.printStackTrace();
} catch (SQLException e) {
out.println("数据库连接失败!");
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
```
在上面的代码中,首先查询商品列表,并为每个商品添加一个“加入购物车”的链接。当用户点击“加入购物车”链接时,会通过 URL 参数传递商品编号,然后查询该商品信息并加入购物车。购物车可以使用 Session 对象来存储,示例代码如下:
```java
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*" %>
<%
String url = "jdbc:mysql://localhost:3306/shopping_cart";
String user = "root";
String password = "root";
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, user, password);
// 查询商品列表
pstmt = conn.prepareStatement("SELECT id, name, price FROM products");
rs = pstmt.executeQuery();
while (rs.next()) {
out.println("商品编号:" + rs.getInt("id") + ",商品名称:" + rs.getString("name") + ",商品价格:" + rs.getDouble("price"));
out.println("<a href=\"add_to_cart.jsp?id=" + rs.getInt("id") + "\">加入购物车</a><br>");
}
// 处理购物车操作
String id = request.getParameter("id");
if (id != null) {
pstmt = conn.prepareStatement("SELECT id, name, price FROM products WHERE id = ?");
pstmt.setString(1, id);
rs = pstmt.executeQuery();
if (rs.next()) {
// 获取 Session 对象
HttpSession session = request.getSession();
// 获取购物车列表
List<Map<String, Object>> cart = (List<Map<String, Object>>) session.getAttribute("cart");
if (cart == null) {
cart = new ArrayList<Map<String, Object>>();
session.setAttribute("cart", cart);
}
// 将商品加入购物车
Map<String, Object> item = new HashMap<String, Object>();
item.put("id", rs.getInt("id"));
item.put("name", rs.getString("name"));
item.put("price", rs.getDouble("price"));
cart.add(item);
out.println("已加入购物车:" + rs.getString("name") + ",价格:" + rs.getDouble("price") + "<br>");
}
}
} catch (ClassNotFoundException e) {
out.println("找不到驱动程序类,加载驱动失败!");
e.printStackTrace();
} catch (SQLException e) {
out.println("数据库连接失败!");
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
%>
```
在上面的代码中,首先获取 Session 对象,并从中获取购物车列表。如果购物车列表不存在,则创建一个新的列表并将其添加到 Session 对象中。然后将商品信息存储为一个 Map 对象,并将其添加到购物车列表中。
最后,你可以创建一个 `cart.jsp` 页面来显示购物车内容,示例代码如下:
```java
<%@ page import="java.util.*" %>
<%
HttpSession session = request.getSession();
List<Map<String, Object>> cart = (List<Map<String, Object>>) session.getAttribute("cart");
if (cart == null) {
out.println("购物车为空!");
} else {
double total = 0.0;
for (Map<String, Object> item : cart) {
out.println("商品名称:" + item.get("name") + ",商品价格:" + item.get("price") + "<br>");
total += (double) item.get("price");
}
out.println("总价:" + total);
}
%>
```
在上面的代码中,首先获取 Session 对象,并从中获取购物车列表。如果购物车列表不存在,则输出“购物车为空!”的提示信息。否则遍历购物车列表,并输出每个商品的名称和价格。最后计算出购物车总价,并输出到页面上。
以上就是一个简单的 JSP 购物车程序的实现方法,你可以根据自己的需要进行修改和扩展。
阅读全文