之前的時候寫過一篇文章,因為各種原因,需要搭建一套ssm框架,上次的時候就是搭建了一套框架,但是其中相應的程式碼實現並沒有新增進去,今天咱就完整起來,搭建一個測試程式碼,當然大家不需要非要用我的,再網上有很多相應的程式碼文章,只不過我的這個有點傻瓜式的,直接cv程式碼即可,不出問題是可以直接執行的
好了,話不多說,看正文吧
配置spring容器等相關配置檔案1. 在pom.xml(位置:專案的根目錄下)中引入必要的pom依賴(其中包括了spring、springmvc、jdbc、mysql、druid連線池、mybatis、lombok外掛、juni他、其他工具包 ),相關的程式碼我在之前的文章中已經公佈,大家可以自行下載
如果想要自己新增jar包,可以在WEB-INF中新建lib資料夾,然後放入你的jar包(poom依賴下載的jar包編譯過後其實也就是在編譯包下的lib資料夾中)
每次更改pom依賴後,記得更新jar包,一般右下角都會彈出更新提示
2. 配置web.xml檔案(位置:webapp下的WEB-INF中) tomcat啟動時,會載入此檔案,從而掃描載入其他的配置檔案
<?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_4_0.xsd" version="4.0"></web-app>
其中包括了編碼過濾、監聽器、springmvc配置、spring容器中其他配置包括mybatis等、log4j配置、專案訪問預設歡迎頁,如需新增自定義過濾器,也許在此配置
3. 新建其他配置檔案(位置:resoures下) applicationContext.xml、springmvc.xml、mybatis.xml、jdbc.properties、日誌配置(log4j.properties和log4j.xml二選一,我用的log4j.xml)
spring-mvc.xml
後來的其他配置檔案也可以在這個裡邊引入比如:shiro、redis叢集、cache-redis快取、自定義元件等等(優點:不用再去動web.xml的配置)
spring-mybatis.xml
建立這個配置檔案的時候一定要注意自己的資料庫的ip連結,賬號和密碼,我這邊使用的虛擬機器的資料庫,本地沒有安裝,所以這個地方我用的是我虛擬機器的ip地址
#mysqljdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://192.168.79.7:3306/test?useUnicode=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=123456jdbc.initialSize=3jdbc.maxActive=1000jdbc.minIdle=0jdbc.maxWait=6000jdbc.removeAbandoned=truejdbc.removeAbandonedTimeout=1800jdbc.timeBetweenEvictionRunsMillis=60000jdbc.minEvictableIdleTimeMillis=25200000jdbc.validationQuery=select getdate()jdbc.testWhileIdle=falsejdbc.testOnBorrow=falsejdbc.testOnReturn=false
log4j.xml
好了,經過以上一套噼裡啪啦的操作,配置基本算是好了,接下來讓我們寫程式碼檢驗一下我們的配置到底對不對呢,激動人心的時刻就要來了
六、編寫程式碼測試1. java資料夾下,新建package包com.biws,另外再新建包括controller、mapper、model、service的四個包
建立包,然後建立對應的類,這是我建立完成之後的一個目錄結構,這個地方先建立包結構,然後再去建立了,按照我下面的步驟建立類,不然會報錯
2. 在每個包下分別新建程式碼檔案:TestController.java、TpmTestLogService.java、TpmTestLogServiceImpl.java、TpmTestLogMapper.java、TpmTestLogMapper.xml、TpmTestLog
實體類:TpmTestLog.java
package com.biws.model;import lombok.Data;import java.io.Serializable;/** * @author :biws * @date :Created in 2020/12/19 21:59 * @description: */@Datapublic class TpmTestLog implements Serializable{ /** * @備註: 主鍵 * @欄位:LOG_UUID bigint */ private Long logUuid; /** * @備註: * @欄位:TESTMAIN_UUID CHAR(32) */ private String testmainUuid; /** * @備註: * @欄位:OPERATION VARCHAR(20) */ private String operation; /** * @備註: * @欄位:SYSCREATEDATE VARCHAR(25) */ private String syscreatedate; public Long getLogUuid() { return logUuid; } public void setLogUuid(Long logUuid) { this.logUuid = logUuid; } public String getTestmainUuid() { return testmainUuid; } public void setTestmainUuid(String testmainUuid) { this.testmainUuid = testmainUuid; } public String getOperation() { return operation; } public void setOperation(String operation) { this.operation = operation; } public String getSyscreatedate() { return syscreatedate; } public void setSyscreatedate(String syscreatedate) { this.syscreatedate = syscreatedate; } @Override public String toString() { return "TpmTestLog{" + "logUuid=" + logUuid + ", testmainUuid='" + testmainUuid + '\'' + ", operation='" + operation + '\'' + ", syscreatedate='" + syscreatedate + '\'' + '}'; }}
資料庫互動層dao介面:TpmTestLogMapper.java
package com.biws.mapper;import com.biws.model.TpmTestLog;/** * @author :biws * @date :Created in 2020/12/19 21:56 * @description: */public interface TpmTestLogMapper { Long insert(TpmTestLog tpmTestLog);}
對應的xml:TpmTestLogMapper.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.test.mapper.TpmTestLogMapper"> <resultMap type="com.test.model.TpmTestLog" id="mTpmTestLog" autoMapping="true"> </resultMap> <sql id="mTpmTestLogSql"> LOG_UUID AS logUuid, TESTMAIN_UUID AS testmainUuid, OPERATION AS operation, SYSCREATEDATE AS syscreatedate </sql> <insert id="insert" parameterType="TpmTestLog" useGeneratedKeys="true" keyProperty="logUuid"> INSERT INTO TPM_TEST_LOG (LOG_UUID, TESTMAIN_UUID, OPERATION, SYSCREATEDATE) VALUES (#{logUuid}, #{testmainUuid}, #{operation}, #{syscreatedate}) </insert></mapper>
業務層介面類sercice:TpmTestLogService.java
package com.biws.service;import com.biws.model.TpmTestLog;/** * @author :biws * @date :Created in 2020/12/19 21:55 * @description: */public interface TpmTestLogService { Long ceshi(TpmTestLog tpmTestLog);}
業務層的實現類impl:TpmTestLogServiceImpl.java
package com.biws.service.impl;import com.biws.mapper.TpmTestLogMapper;import com.biws.model.TpmTestLog;import com.biws.service.TpmTestLogService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;/** * @author :biws * @date :Created in 2020/12/19 21:59 * @description: */@Service@Transactionalpublic class TmpTestLogServiceImpl implements TpmTestLogService { @Autowired private TpmTestLogMapper tpmTestLogMapper; @Override public Long ceshi(TpmTestLog tpmTestLog) { return tpmTestLogMapper.insert(tpmTestLog); }}
介面邏輯層controller:TestController.java
package com.biws.controller;import com.alibaba.fastjson.JSONObject;import com.biws.model.TpmTestLog;import com.biws.service.TpmTestLogService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/** * @author :biws * @date :Created in 2020/12/19 21:55 * @description: */@RestController@RequestMapping("/api")public class TestController { @Autowired private TpmTestLogService tpmTestLogService; @GetMapping("/test") public JSONObject test(){ JSONObject jsonObject = new JSONObject(); TpmTestLog tpmTestLog = new TpmTestLog(); tpmTestLog.setSyscreatedate("asfasgags"); tpmTestLog.setTestmainUuid("fdasgassfsarew"); tpmTestLog.setOperation("新增"); tpmTestLogService.ceshi(tpmTestLog); jsonObject.put("title", "測試成功" + tpmTestLog.getLogUuid()); return jsonObject; }}
3. 資料庫互動,測試表以及資料庫連線檔案jdbc中的配置(文中5.3已有配置檔案) Table:TPM_TEST_LOG
SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for `TPM_TEST_LOG`-- ----------------------------DROP TABLE IF EXISTS `TPM_TEST_LOG`;CREATE TABLE `TPM_TEST_LOG` ( `LOG_UUID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵', `TESTMAIN_UUID` varchar(32) COLLATE utf8_bin DEFAULT NULL, `OPERATION` varchar(20) COLLATE utf8_bin DEFAULT NULL, `SYSCREATEDATE` varchar(25) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`LOG_UUID`)) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;SET FOREIGN_KEY_CHECKS = 1;
4. 測試介面 因為是寫的測試是get請求,所以可以直接在瀏覽器中測試,位址列輸入介面地址(4.4中你配置的地址),回車訪問,如下圖
七、前端頁面和介面互動測試1. 編寫前端頁面測試程式碼(不要說你是後臺,不會寫前端程式碼,不會也沒關係,直接copy吧,有問題找google)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><p>執行到這裡了</p><script> window.onload = function () { //步驟一:建立非同步物件 var ajax = new XMLHttpRequest(); //步驟二:設定請求的url引數,引數一是請求的型別,引數二是請求的url,可以帶引數,動態的傳遞引數starName到服務端 ajax.open('get', '/api/test'); //步驟三:傳送請求 ajax.send(); //步驟四:註冊事件 onreadystatechange 狀態改變就會呼叫 ajax.onreadystatechange = function () { if (ajax.readyState == 4 && ajax.status == 200) { //步驟五 如果能夠進到這個判斷 說明 資料 完美的回來了,並且請求的頁面是存在的 console.log(ajax.responseText);//輸入相應的內容 console.log(JSON.parse(ajax.responseText).title); console.log(document.getElementsByTagName("h2")[0]) document.getElementsByTagName("h2")[0].innerText = JSON.parse(ajax.responseText).title; } } }</script></body></html>
2. 接下來見證奇蹟,開啟頁面地址:http://localhost:8085/index.html
後臺經過與資料庫互動後,把插入資料庫後生成的主鍵4返回給前端,前端顯示在頁面中