用java写一个购物网站
时间: 2023-12-30 18:02:59 浏览: 40
要用Java写一个购物网站,可以采用以下技术栈和步骤:
1. 技术栈:Java、Spring、SpringMVC、MyBatis、MySQL、HTML、CSS、JavaScript等。
2. 数据库设计:设计商品、订单、用户等表结构。
3. 后端开发:使用Spring框架管理Bean,使用SpringMVC框架开发商品、订单、用户等Controller,使用MyBatis框架实现与数据库的交互,使用Java中的Session管理用户登录状态。
4. 前端开发:使用HTML、CSS、JavaScript等技术实现网站页面布局和功能实现,如商品展示、购物车、订单确认等。
5. 安全性处理:使用SSL协议保证用户信息安全传输,使用验证码、加密算法等技术提高网站安全性。
6. 部署和运行:将网站部署到Tomcat等Web服务器上,并配置好数据库连接等参数,保证网站正常运行。
以下是一个简单的购物网站的代码示例,供参考:
1. 数据库设计:
```sql
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
CREATE TABLE `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`product_id` int(11) NOT NULL,
`amount` int(11) NOT NULL,
`total_price` decimal(10,2) NOT NULL,
`create_time` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
2. 后端开发:
User.java
```java
public class User {
private int id;
private String username;
private String password;
// getter and setter
}
```
Product.java
```java
public class Product {
private int id;
private String name;
private BigDecimal price;
// getter and setter
}
```
Order.java
```java
public class Order {
private int id;
private User user;
private Product product;
private int amount;
private BigDecimal totalPrice;
private Date createTime;
// getter and setter
}
```
UserMapper.java
```java
public interface UserMapper {
User getUserById(int id);
User getUserByUsernameAndPassword(String username, String password);
}
```
ProductMapper.java
```java
public interface ProductMapper {
List<Product> getAllProducts();
Product getProductById(int id);
}
```
OrderMapper.java
```java
public interface OrderMapper {
void addOrder(Order order);
List<Order> getOrdersByUserId(int userId);
}
```
UserController.java
```java
@Controller
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping(value="/login", method=RequestMethod.POST)
public String login(@RequestParam("username") String username,
@RequestParam("password") String password,
HttpSession session) {
User user = userMapper.getUserByUsernameAndPassword(username, password);
if (user != null) {
session.setAttribute("user", user);
return "redirect:/listProducts";
} else {
return "login";
}
}
@RequestMapping(value="/logout", method=RequestMethod.GET)
public String logout(HttpSession session) {
session.invalidate();
return "redirect:/login";
}
}
```
ProductController.java
```java
@Controller
public class ProductController {
@Autowired
private ProductMapper productMapper;
@RequestMapping("/listProducts")
public String listProducts(Model model) {
List<Product> products = productMapper.getAllProducts();
model.addAttribute("products", products);
return "listProducts";
}
@RequestMapping("/getProduct")
@ResponseBody
public Product getProduct(@RequestParam("id") int id) {
return productMapper.getProductById(id);
}
}
```
OrderController.java
```java
@Controller
public class OrderController {
@Autowired
private OrderMapper orderMapper;
@RequestMapping(value="/addOrder", method=RequestMethod.POST)
@ResponseBody
public String addOrder(@RequestParam("productId") int productId,
@RequestParam("amount") int amount,
HttpSession session) {
User user = (User) session.getAttribute("user");
if (user == null) {
return "login";
}
Product product = productMapper.getProductById(productId);
if (product == null) {
return "error";
}
Order order = new Order();
order.setUser(user);
order.setProduct(product);
order.setAmount(amount);
order.setTotalPrice(product.getPrice().multiply(new BigDecimal(amount)));
order.setCreateTime(new Date());
orderMapper.addOrder(order);
return "success";
}
@RequestMapping("/listOrders")
public String listOrders(Model model, HttpSession session) {
User user = (User) session.getAttribute("user");
if (user == null) {
return "login";
}
List<Order> orders = orderMapper.getOrdersByUserId(user.getId());
model.addAttribute("orders", orders);
return "listOrders";
}
}
```
3. 前端开发:
login.jsp
```html
<form method="post" action="${pageContext.request.contextPath}/login">
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<button type="submit">Login</button>
</form>
```
listProducts.jsp
```html
<table>
<tr>
<th>Name</th>
<th>Price</th>
<th>Action</th>
</tr>
<c:forEach var="product" items="${products}">
<tr>
<td>${product.name}</td>
<td>${product.price}</td>
<td>
<button onclick="addToCart(${product.id})">Add to cart</button>
</td>
</tr>
</c:forEach>
</table>
```
listOrders.jsp
```html
<table>
<tr>
<th>Product Name</th>
<th>Order Amount</th>
<th>Total Price</th>
<th>Create Time</th>
</tr>
<c:forEach var="order" items="${orders}">
<tr>
<td>${order.product.name}</td>
<td>${order.amount}</td>
<td>${order.totalPrice}</td>
<td>${order.createTime}</td>
</tr>
</c:forEach>
</table>
```
4. 部署和运行:
将代码打包成war包,并部署到Tomcat等Web服务器上,启动Web服务器,访问网站即可。