1. 程式人生 > >idea下用spring boot(maven的升級版)搭建SSM微服務環境專案

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框架單體專案,現在跑通了前端,後端及連線資料庫的部分就可以繼續操作了。