SpringMVC是現在主流框架,包括我現在也是用的SpringBoot+SpringMvc+MySql+Mybatis+Redis+....。今天給大家帶來整合SpringBoot+SpringMvc+mysql實現用戶的登錄和註冊,並在mysql中保存和修改。
1. 打開http://start.spring.io/,填寫需要用的項目功能。會自動生成基本的目錄結構及porm.xml文件和dependencies,並自動配置需要的jar包。搭建spring boot常用的工具爲Maven。
2. 下載Maven項目包。導入到eclipse。選擇file--import---Existing Maven Project,然後自動生成如下項目結構
3. 自動生成的porm.xml文件如下。如果第一次構建,右擊項目---Maven---update project會自動下載Jar包到Maven 的local Repository.(在D:\apache-maven-3.5.3\conf\settings.xml中設置<localRepository>E:\apache-mavenRepository</localRepository>。並在eclipse的window---Maven ---user setting 選擇這個設置文件並更新。)。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.plin</groupId>
<artifactId>bookebuy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>bookebuy</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4. Spring Boot 的優點在於spring-boot-starter-parent集成了各做框架,只需要在Maven中把定義爲parent標籤。並且可以統一管理版本,避免版本間的衝突。
5.項目結構
5. application.properties 配置mysql連接信息
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/bookebuy
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active = 20
spring.datasource.max-idle=10
spring.datasource.min.idle=10
spring.datasource.initial-size=10
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
7. Spring MVC 三層代碼
7.1 Controller層,Web訪問服務器,會首先在這裏請求,並映射到各個RequestMapping,然後處理各個邏輯。
//採用RestController,在返回時,如果registSucceful。jsp,直接返回這個頁面,如果沒有,直接返回該字符串
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.plin.bookebuy.domain.User;
import com.plin.bookebuy.service.IUserService;
//採用RestController,在返回時,如果registSucceful.jsp,直接返回這個頁面,如果沒有,直接返回該字符串
@RestController
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/user/regist")
public String regist(String username,String password,String email){
User user = new User();
user.setEmail(email);
user.setPassword(password);
user.setUsername(username);
userService.addUser(user);
System.out.println("consle---/user/regist");
return "registSucceful";
}
}
7.2 Service層
Controller層會調用Service層的方法。項目大部分的邏輯處理和事物處理都在Service層。比如判斷用戶或商品是否存在,然後調用Dao層進行處理或拋出全局異常到Controller及客戶端。
package com.plin.bookebuy.service;
import com.plin.bookebuy.domain.User;
public interface IUserService {
void addUser(User user);
}
package com.plin.bookebuy.service;
import java.net.URI;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Service;
import com.plin.bookebuy.dao.UserDao;
import com.plin.bookebuy.domain.User;
@Service
public class UserServiceImpl implements IUserService{
@Autowired
private UserDao userDao;
@Override
public void addUser(User user) {
userDao.addUser(user);
}
}
7.3 Dao層,連接數據庫層,在這裏執行連接數據庫的操作
package com.plin.bookebuy.dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import com.plin.bookebuy.domain.User;
@Repository
public class UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public void addUser(User user) {
String sql = "INSERT INTO users VALUES(null,?,?,?,'user','0',null,null)";
jdbcTemplate
.update(sql,user.getUsername(),user.getPassword(),user.getEmail());
}
}
8. 程序入口,直接右鍵,run as java application, 即可啓動這個Web項目。然後在服務端就可以訪問。
package com.plin.bookebuy;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class BookebuyApplication {
public static void main(String[] args) {
SpringApplication.run(BookebuyApplication.class, args);
}
}
9.運行測試
在遊覽器中輸入用戶名和密碼進行測試
數據庫查看