天天看點

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

文章目錄

  • 前言
    • 什麼是SSM架構
    • 準備工作
  • 正題
    • 1.建立項目
      • 打開IDEA,建立新項目
      • 如圖建立Maven WebApp項目
      • 補全項目資訊
      • 選擇之前準備好的Maven
      • 選擇項目存放的位置,然後點選Finish完成項目建立
      • 建立好的項目如圖所示
    • 2.完善項目
      • 建立項目所需檔案夾
      • 給檔案夾賦屬性,讓idea識别各個目錄的作用
      • 添加SSM架構所需依賴
      • 配置web.xml
      • 建立架構所需的配置檔案
      • 配置架構所需的配置檔案内容
  • 測試
    • 1.建立測試所需的Java類
    • 2.建立類的Mybatis的配置檔案
    • 3.修改index.jsp
    • 4.配置Tomcat
    • 5.配置資料庫
    • 6.運作項目
  • 文章結束

前言

什麼是SSM架構

SSM架構是spring MVC,spring和mabatis架構的整合,是标準的MVC模式,将整個系統劃分為表現層,controller層,service層,DAO層四層

準備工作

準備好以下工具:

1.IntelliJ IDEA

2.jdk1.8

3.Maven

4.Tomcat8

正題

1.建立項目

打開IDEA,建立新項目

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖建立Maven WebApp項目

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

補全項目資訊

翻譯:

GroupID :是項目組織唯一的辨別符,實際對應JAVA的包的結構,是main目錄裡java的目錄結構

ArtifactID :是項目的唯一的辨別符,實際對應項目的名稱,就是項目根目錄的名稱

version : 版本号

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

選擇之前準備好的Maven

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

選擇項目存放的位置,然後點選Finish完成項目建立

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

此時右下角會彈出提示框,選擇第二個選項,意思是更改pom檔案後就會自動下載下傳依賴包

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

建立好的項目如圖所示

項目結構介紹:

【.idea檔案夾】和是idea的一些配置檔案,不用管他

【src檔案夾】就是我們放項目代碼的地方

【pom.xml】是maven的配置檔案,我們需要什麼jar包,都可以在裡面添加依賴,然後maven就會自己幫我們下到本地倉庫裡面

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

2.完善項目

建立項目所需檔案夾

詳細做法:

在src檔案夾下建立test檔案夾

在src>test檔案夾下建立java檔案夾

在src>main檔案夾下建立java檔案夾

在src>main檔案夾下建立resources檔案夾

檔案夾的用途:

test : 用來放測試檔案

java : 用來放java檔案

resources : 用來放各種架構的配置資訊檔案

右鍵建立檔案夾

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

建好的檔案夾如圖所示

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

給檔案夾賦屬性,讓idea識别各個目錄的作用

選擇File-Project Structure

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

切換到Modules

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖點選java檔案夾,然後點選上方Source

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖點選resources檔案夾,然後點選上方Resource

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖點選text檔案夾下的java檔案夾,然後點選上方Tests。搞定後點OK儲存并關閉

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

添加SSM架構所需依賴

替換pom.xml檔案中的内容,内容如下

<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/maven-v4_0_0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.chatRobot</groupId>
  <artifactId>ChatRobot</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ChatRobot Maven Webapp</name>
  <url>http://maven.apache.org</url>

  <properties>
    <!-- 設定項目編碼編碼 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- spring版本号 -->
    <spring.version>4.3.5.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.4.1</mybatis.version>
  </properties>

  <dependencies>

    <!-- java ee -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <!-- 單元測試 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <!-- 實作slf4j接口并整合 -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!-- JSON -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.7</version>
    </dependency>


    <!-- 資料庫 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.41</version>
      <scope>runtime</scope>
    </dependency>

    <!-- 資料庫連接配接池 -->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
    </dependency>

    <!-- MyBatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <!-- mybatis/spring整合包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- Spring -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

  </dependencies>

  <build>
    <finalName>ChatRobot</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <!-- 設定JDK版本 -->
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
           

替換好的pom.xml檔案如圖所示,此時maven會自動下載下傳依賴,第一次可能比較慢,耐心等待加載完再進行下一步

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

配置web.xml

打開位于main>webapp>WEB-INF檔案夾下的web.xml

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

替換web.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">

  <display-name>ChatRobot</display-name>
  <description>ChatRobot_Alpha_0.0.1</description>

  <!-- 編碼過濾器 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 配置DispatcherServlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置springMVC需要加載的配置檔案-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!-- 比對所有請求,此處也可以配置成 *.do 形式 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>
           

替換後的檔案如圖所示

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

建立架構所需的配置檔案

在resources檔案夾下建立 logback.xml、jdbc.properties

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束
IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

第二個檔案jdbc.properties是同樣的操作建立,如圖所示我們已經建好這兩個檔案

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

在resources檔案夾下建立 spring-mybatis.xml、spring-mvc.xml

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束
IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

第二個檔案spring-mvc.xml是同樣的操作建立,如圖所示我們已經建好這兩個檔案

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

配置架構所需的配置檔案内容

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <root level="debug">
        <appender-ref ref="STDOUT"/>
    </root>
</configuration>
           

jdbc.properties

這裡請填寫自己的資料庫位址以及庫名、賬戶和密碼

jdbc.driver=com.mysql.jdbc.Driver
#資料庫位址
jdbc.url=jdbc:mysql://localhost:3306/xxxx?useUnicode=true&characterEncoding=utf8
#使用者名
jdbc.username=xxxx
#密碼
jdbc.password=xxxxx
#最大連接配接數
c3p0.maxPoolSize=30
#最小連接配接數
c3p0.minPoolSize=10
#關閉連接配接後不自動commit
c3p0.autoCommitOnClose=false
#擷取連接配接逾時時間
c3p0.checkoutTimeout=10000
#當擷取連接配接失敗重試次數
c3p0.acquireRetryAttempts=2
           

spring-mybatis.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:tx="http://www.springframework.org/schema/tx"
       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/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 掃描service包下所有使用注解的類型 -->
    <context:component-scan base-package="com.moli.service"/>

    <!-- 配置資料庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 資料庫連接配接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
        <property name="minPoolSize" value="${c3p0.minPoolSize}"/>
        <property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
        <property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
        <property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
    </bean>

    <!-- 配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入資料庫連接配接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 掃描model包 使用别名 -->
        <property name="typeAliasesPackage" value="com.moli.model"/>
        <!-- 掃描sql配置檔案:mapper需要的xml檔案 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

    <!-- 配置掃描Dao接口包,動态實作Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 給出需要掃描Dao接口包 -->
        <property name="basePackage" value="com.moli.dao"/>
    </bean>

    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入資料庫連接配接池 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置基于注解的聲明式事務 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>
           

spring-mvc.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-3.0.xsd">

    <!-- 掃描web相關的bean -->
    <context:component-scan base-package="com.moli.controller"/>

    <!-- 開啟SpringMVC注解模式 -->
    <mvc:annotation-driven/>

    <!-- 靜态資源預設servlet配置 -->
    <mvc:default-servlet-handler/>

    <!-- 配置jsp 顯示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>
           

測試

1.建立測試所需的Java類

如圖建立包和所需的測試類

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

類的代碼如下:

CsPoJo

package com.moli.model;
public class CsPoJo {

    private long id;
    private String name;
    
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
           

CsDao

package com.moli.dao;

import com.moli.model.CsPoJo;

public interface CsDao {
    CsPoJo selectCs(long id);
}
           

CsService

package com.moli.service;

import com.moli.model.CsPoJo;

public interface CsService {

    public CsPoJo selectCs(long userId);

}
           

CsServiceImpl

package com.moli.service.imp;

import com.moli.dao.CsDao;
import com.moli.model.CsPoJo;
import com.moli.service.CsService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

@Service("csService")
public class CsServiceImpl implements CsService {

    @Resource
    private CsDao userDao;
    public CsPoJo selectCs(long userId) {
        return this.userDao.selectCs(userId);
    }
}
           

CsController

package com.moli.controller;

import javax.servlet.http.HttpServletRequest;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.moli.model.CsPoJo;
import com.moli.service.CsService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
@RequestMapping("/Cs")
public class CsController {

    @Resource
    private CsService csService;

    @RequestMapping("/ceshi.do")
    public void selectUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("UTF-8");
        response.setCharacterEncoding("UTF-8");
        long userId = Long.parseLong(request.getParameter("id"));
        CsPoJo user = this.csService.selectCs(userId);
        ObjectMapper mapper = new ObjectMapper();
        response.getWriter().write(mapper.writeValueAsString(user));
        response.getWriter().close();
    }
}
           

2.建立類的Mybatis的配置檔案

在resources下建立mapper檔案夾,然後在檔案夾中建立csDao.xml

csDao.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">

<!-- 設定為UserDao接口方法提供sql語句配置 -->
<mapper namespace="com.moli.dao.CsDao">

    <select id="selectCs" resultType="CsPoJo" parameterType="long">
        SELECT * FROM cstb WHERE id = #{id}
    </select>

</mapper>
           

3.修改index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<script>
    function selectUser() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("test").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "Cs/ceshi.do", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("id=1");
    }
</script>
<body>
<p id="test">Hello World!</p>
<button type="button" onclick="selectUser()">測試</button>
</body>
</html>
           

4.配置Tomcat

點選右上角Add

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖選擇

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖選擇

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

選擇之前準備好的Tomcat路徑

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

如圖選擇

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

選擇好之後點選OK

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

5.配置資料庫

資料庫如圖所示,可以自行搭建并建立測試資料

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

6.運作項目

點選箭頭運作項目

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

點選測試按鈕可以看到正常查出資料

IntelliJ IDEA 搭建 JavaWeb SSM 架構前言正題測試文章結束

文章結束

這是我通過學習對知識的整理及備忘,本部落格的所有内容,僅是自己的一些學習筆記,如有錯誤,歡迎指正。如有侵權,請告知修改。