idea下用spring boot(maven的升級版)搭建SSM微服務環境專案
簡述:今天開始建立springboot式的微服務環境專案,這裡重點在於學習,所以也是一步一步的搭建並完善,這裡先用普通maven(spring boot)建立單體專案引進,隨後再引進dubbo,完成為服務結構。理論方面的這裡不做重點說明,先上程式碼。
1. 新建一個project springboot-demo
1.1)file----->new----->project:
1.2)選擇maven,然後直接next:
1.3)填寫 GroupId 和 ArtifactId 然後next:
1.4)下一步直接fanish完成:
1.5)記住點選右下角的自動導包:
1.6)在工程下新建module
1.7)選擇Spring Initializr ,確認Defult的選擇,然後next:
1.8)填寫分模組的以下資訊,然後next:
1.9)這裡需要做web和SQL的選擇,如下:
1.10)確認資訊後,直接fanish完成:
1.11)分模組ssm建好後,結構如下:
接下來就是一系列更改配置,為的是完善以上SsmApplication.java資訊和application.properties
2. 配置ssm專案的jar依賴
先看一下ssm的pom.xml檔案原文:
<?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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.1.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>cn.kgc1803</groupId> <artifactId>ssm</artifactId> <version>0.0.1-SNAPSHOT</version> <name>ssm</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </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>
檔案裡的父節點如下,可以做深入探究,Ctrl+滑鼠左鍵點選:<artifactId>spring-boot-starter-parent</artifactId>即可進入父節點
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
不過,這裡需要把父節點刪掉,和下面的自動依賴jar包刪掉,用我們自己寫的方式來建立。這時候需要檢查maven的配置是否正確,不然引不了jar包,快捷鍵(Ctrl+Alt+S)產看並更改後引入jar包:
2.1)spring-*.jar
<!--spring-*.jar-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
2.2)spring mvc
<!--spring mvc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
2.3)mysql 驅動包
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
2.3)mybaties、mybaties-spring、spring-jdbc
<!--mybaties、mybaties-spring、spring-jdbc-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
2.4)測試包
<!--測試包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
2.5)jsp 頁面外掛jar包,下面在頁面測試的時候是部署到idea內建的tomcat伺服器,因此這裡需要做一個jsp頁面的測試用jar包,idea內建的tomcat才會識別到:
<!--jsp 頁面外掛jar包-->
<!--ideal 內建tomcat不支援jsp,增加jsp jar包-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>9.0.12</version>
<scope>provided</scope>
</dependency>
修改後的pom.xml檔案如下:
<?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>cn.kgc1803</groupId>
<artifactId>ssm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>ssm</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.1.0.RELEASE</spring.boot.version>
<mybaties.spring.boot.version>1.3.2</mybaties.spring.boot.version>
<mysql.driver.version>5.1.46</mysql.driver.version>
</properties>
<dependencies>
<!--spring-*.jar-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<!--spring mvc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.driver.version}</version>
</dependency>
<!--mybaties、mybaties-spring、spring-jdbc-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybaties.spring.boot.version}</version>
</dependency>
<!--測試包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<!--jsp 頁面外掛jar包-->
<!--ideal 內建tomcat不支援jsp,增加jsp jar包-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>9.0.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>9.0.12</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. 在spring boot配置檔案(application.properties或者application.yml)完成ssm配置。
3.1)dataSource(驅動、url、使用者名稱、密碼)
#dataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/dubbo-smbms?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
3.2)@Mapper @Service @Controller 等註解spring boot會自動掃描(原因是上面1.9步驟做了web和SQL的選擇,有自動的jar包生成工具),不做任何配置。
3.3)spring mvc配置(檢視解析器),但是註解驅動不配置:
#spring mvc
spring.mvc.view.prefix=/WEB-INF/view/
spring.mvc.view.suffix=.jsp
3.4)web.xml 的 spring字符集:
#spring 字符集
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
3.5)tomcat伺服器 埠: 字符集:
#伺服器
server.port=8081
server.tomcat.uri-encoding=UTF-8
4. 編寫pojo實體類,controller業務操作層為後面的jsp頁面測試做準備
User.java實體類:
package cn.kgc1803.ssm.pojo;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String userCode;
private String userName;
private String password;
public User(){}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserController.java控制器
package cn.kgc1803.ssm.controller;
import cn.kgc1803.ssm.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/user")
public class UserController {
//登陸
@RequestMapping(value = "/dologin.html",method = RequestMethod.POST)
public String dologin(User user, HttpSession session){
session.setAttribute("session_user",user);
return "index";
}
}
之前在的專案環境可以在web.xml配置檔案配置訪問首頁的設定,現在spring boot環境專案沒有web.xml檔案,所以,idea內建tomcat伺服器啟動的時候,無法訪問到首頁內容地址,這裡的解決方法是在controller層寫一個控制器直接訪問首頁即可:
IndexController.java 控制器:
package cn.kgc1803.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class IndexController {
@RequestMapping("/")
public String index(){
return "login";
}
}
5.編寫頁面測試
5.1)先建立jsp頁面的路徑設定和pom.xml檔案增加一個war設定,以便可以用工具直接建立jsp
設定好後,會出現以下目錄,並完善結構:
建立jsp:
login.jsp
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2018/12/26
Time: 22:31
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登陸</title>
</head>
<body>
<form method="post" action="${pageContext.request.contextPath}/user/dologin.html">
使用者名稱:<input type="text" name="userName">
密碼:<input type="password" name="password">
<input type="submit" value="登陸">
</form>
</body>
</html>
index.jsp
<%--
Created by IntelliJ IDEA.
User: Lenovo
Date: 2018/12/26
Time: 22:34
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>首頁</title>
</head>
<body>
登陸成功,歡迎您:${session_user.userName}
</body>
</html>
6. 測試
6.1)spring boot專案用idea內建的tomcat伺服器部署,啟動需要按下面的方式啟動才能調整出頁面:
啟動成功後需要手動在瀏覽器輸入網址:http://localhost:8081/ 需要注意埠號,如果被佔用了,需要更改配置檔案。
登陸成功後跳轉到首頁:
6.2)如果啟動如下 SsmApplication.java 類
登陸首頁:http://localhost:8081/ 顯示的情況如下:
7. 補充
關於maven專案的jar包去重,這裡先給一個方法,因為後面會操作重複jar包的問題,如果jar包是重複的,右邊會出現暗灰色的提示,可以通過以下方式去重:
這個方法需要jar包的groupId 和 artifactId 與右邊的一一對應,不能出錯。
好了,今天就到此吧,由於這個是springboot建立的ssm框架單體專案,現在跑通了前端,後端及連線資料庫的部分就可以繼續操作了。