详细的新建项目步骤代码,IDEA,MySQL版本5.5.62,用navicat做数据库详细步骤,端口3306
时间: 2025-02-02 13:10:59 浏览: 54
### 新建Java EE项目详细步骤
#### 1. 准备工作
- **IDE**: IntelliJ IDEA
- **数据库**: MySQL 5.5.62
- **数据库管理工具**: Navicat
- **端口**: 3306
- **开发框架**: Spring, Spring MVC, MyBatis
- **应用服务器**: Tomcat 7.0 或以上
#### 2. 创建项目
1. **打开IntelliJ IDEA**
- 选择 `File` -> `New` -> `Project`。
- 选择 `Java Enterprise`,勾选 `Web Application` 和 `Spring`。
- 点击 `Next`,选择 `Tomcat 7.0` 作为应用服务器。
- 点击 `Next`,输入项目名称和位置,点击 `Finish`。
2. **配置项目结构**
- 右键项目根目录,选择 `New` -> `Directory`,创建以下目录结构:
```
src/main/java/com/example/bookstore
src/main/resources
src/main/webapp/WEB-INF
```
#### 3. 添加依赖
1. **打开 `pom.xml` 文件**,添加以下依赖:
```xml
<dependencies>
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.10</version>
</dependency>
<!-- MyBatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- JSP API -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
</dependencies>
```
2. **配置 `web.xml`**
- 打开 `src/main/webapp/WEB-INF/web.xml`,添加以下内容:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
```
3. **配置 `servlet-context.xml`**
- 在 `src/main/webapp/WEB-INF/spring/appServlet` 目录下创建 `servlet-context.xml`,添加以下内容:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.example.bookstore"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/bookstore?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mappers/*.xml"/>
</bean>
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.example.bookstore.mapper"/>
</bean>
</beans>
```
#### 4. 创建数据库
1. **启动Navicat**
- 连接到MySQL服务器,主机为 `localhost`,端口为 `3306`,用户名为 `root`,密码为 `password`。
2. **创建数据库**
- 右键数据库列表,选择 `新建数据库`,输入数据库名称 `bookstore`,点击 `确定`。
3. **创建表**
- 在 `bookstore` 数据库中执行以下SQL语句:
```sql
CREATE TABLE `user` (
`USER_ID` BIGINT(20) NOT NULL AUTO_INCREMENT,
`USERNAME` VARCHAR(50) NOT NULL,
`PASSWORD` VARCHAR(100) NOT NULL,
`SALT` VARCHAR(50) DEFAULT NULL,
`PHONE` VARCHAR(20) DEFAULT NULL,
`ADDRESS` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`USER_ID`),
UNIQUE KEY `username_unique` (`USERNAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `book` (
`BOOK_ID` INT(32) NOT NULL AUTO_INCREMENT,
`TITLE` VARCHAR(32) NOT NULL,
`AUTHOR` VARCHAR(32) NOT NULL,
`ISBN` VARCHAR(32) NOT NULL UNIQUE,
`PRICE` DOUBLE(10,2) NOT NULL,
PRIMARY KEY (`BOOK_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `cart` (
`CART_ID` INT(32) NOT NULL AUTO_INCREMENT,
`USER_ID` BIGINT(20) NOT NULL,
`BOOK_ID` INT(32) NOT NULL,
`PRICE` DOUBLE(10,2) NOT NULL,
`QUANTITY` INT(10) NOT NULL,
PRIMARY KEY (`CART_ID`),
FOREIGN KEY (`USER_ID`) REFERENCES `user`(`USER_ID`),
FOREIGN KEY (`BOOK_ID`) REFERENCES `book`(`BOOK_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `orders` (
`ORDER_ID` INT(32) NOT NULL AUTO_INCREMENT,
`USER_ID` BIGINT(20) NOT NULL,
`ORDER_TIME` DATETIME NOT NULL,
`CART_ID` INT(32) NOT NULL,
`TOTAL_PRICE` DOUBLE(10,2) NOT NULL,
`PHONE` VARCHAR(20) NOT NULL,
`ADDRESS` VARCHAR(255) NOT NULL,
`STATUS` VARCHAR(32) NOT NULL,
PRIMARY KEY (`ORDER_ID`),
FOREIGN KEY (`USER_ID`) REFERENCES `user`(`USER_ID`),
FOREIGN KEY (`CART_ID`) REFERENCES `cart`(`CART_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
```
#### 5. 编写代码
1. **创建实体类**
- 在 `src/main/java/com/example/bookstore/entity` 目录下创建以下实体类:
- `User.java`
```java
package com.example.bookstore.entity;
import lombok.Data;
@Data
public class User {
private Long userId;
private String username;
private String password;
private String salt;
private String phone;
private String address;
}
```
- `Book.java`
```java
package com.example.bookstore.entity;
import lombok.Data;
@Data
public class Book {
private Integer bookId;
private String title;
private String author;
private String isbn;
private Double price;
}
```
- `Cart.java`
```java
package com.example.bookstore.entity;
import lombok.Data;
@Data
public class Cart {
private Integer cartId;
private Long userId;
private Integer bookId;
private Double price;
private Integer quantity;
}
```
- `Order.java`
```java
package com.example.bookstore.entity;
import lombok.Data;
@Data
public class Order {
private Integer orderId;
private Long userId;
private String orderTime;
private Integer cartId;
private Double totalPrice;
private String phone;
private String address;
private String status;
}
```
2. **创建Mapper接口**
- 在 `src/main/java/com/example/bookstore/mapper` 目录下创建以下Mapper接口:
- `UserMapper.java`
```java
package com.example.bookstore.mapper;
import com.example.bookstore.entity.User;
import org.apache.ibatis.annotations.*;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE username = #{username}")
User findByUsername(String username);
@Update("UPDATE user SET photo_path = #{photoPath} WHERE id = #{id}")
int updateUserPhotoPath(User user);
@Select("SELECT * FROM user WHERE phone_number = #{phoneNumber}")
User findByPhoneNumber(String phoneNumber);
}
```
- `BookMapper.java`
```java
package com.example.bookstore.mapper;
import com.example.bookstore.entity.Book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface BookMapper {
@Select("SELECT * FROM book WHERE title LIKE CONCAT('%', #{keyword}, '%') OR author LIKE CONCAT('%', #{keyword}, '%')")
List<Book> searchBooksByKeyword(String keyword);
}
```
3. **创建Service层**
- 在 `src/main/java/com/example/bookstore/service` 目录下创建以下Service接口及其实现类:
- `UserService.java`
```java
package com.example.bookstore.service;
import com.example.bookstore.entity.User;
public interface UserService {
User findByUsername(String username);
boolean validatePassword(User user, String inputPassword);
int updateUserPhotoPath(User user);
User findByPhoneNumber(String phoneNumber);
}
```
- `UserServiceImpl.java`
```java
package com.example.bookstore.service;
import com.example.bookstore.entity.User;
import com.example.bookstore.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User findByUsername(String username) {
return userMapper.findByUsername(username);
}
@Override
public boolean validatePassword(User user, String inputPassword) {
String encryptedInputPassword = DigestUtils.md5DigestAsHex((inputPassword + user.getSalt()).getBytes());
return encryptedInputPassword.equals(user.getPassword());
}
@Override
public int updateUserPhotoPath(User user) {
return userMapper.updateUserPhotoPath(user);
}
@Override
public User findByPhoneNumber(String phoneNumber) {
return userMapper.findByPhoneNumber(phoneNumber);
}
}
```
4. **创建Controller层**
- 在 `src/main/java/com/example/bookstore/controller` 目录下创建以下Controller类:
- `UserController.java`
```java
package com.example.bookstore.controller;
import com.example.bookstore.entity.User;
import com.example.bookstore.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody User user) {
User foundUser = userService.findByUsername(user.getUsername());
if (foundUser != null && userService.validatePassword(foundUser, user.getPassword())) {
return ResponseEntity.ok(foundUser);
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid credentials");
}
}
@PostMapping("/register")
public ResponseEntity<?> register(@RequestBody User user) {
// Implement registration logic
return ResponseEntity.ok("User registered successfully");
}
}
```
#### 6. 配置Tomcat
1. **打开 `Run/Debug Configurations`**
- 选择 `+` -> `Tomcat Server` -> `Local`。
- 配置 `Server` 选项卡,选择 `Tomcat 7.0`。
- 配置 `Deployment` 选项卡,添加 `Artifact`,选择 `bookstore:war exploded`。
2. **启动项目**
- 点击 `Run` 按钮启动项目。
- 打开浏览器,访问 `http://localhost:8080/bookstore` 查看效果。
### 总结
通过以上步骤,你可以成功创建一个基于Java EE的在线图书商城系统项目。项目的结构清晰,采用了Spring、Spring MVC和MyBatis等主流框架,数据库使用MySQL,前端页面使用JSP。希望这些步骤对你有所帮助!如果有任何问题,欢迎随时提问。
阅读全文
相关推荐




















