IntelliJ IDEA 2018.2.1——(三)Maven Web SSM項目

IntelliJ IDEA 2018.2.1


參考:https://blog.csdn.net/khxu666/article/details/79851070 

第一:IntelliJ IDEA 2018.2.1

第二:JDK 1.8.0_77

第三:Tomcat 8.0.35

第四:MySQL 8.0.17 

第五:Maven  3.5.3


(一)基本概念

     使用SSM(Spring,SpringMVC和Mybatis)

1.1、Spring

        Spring是一個開源框架,Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而創建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。 簡單來說,Spring是一個輕量級的控制反轉(IoC)和麪向切面(AOP)的容器框架。

1.2、SpringMVC

   Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定製。

 1.3、MyBatis

  MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis 。MyBatis是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或註解用於配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

(二) 創建項目

Maven基本目錄結構參考:https://blog.csdn.net/ysblogs/article/details/103856655

1、設置maven的目錄 setting.xml文件的目錄 maven庫的目錄 

2、 可以直接Close 右下角選中Enable Auto-Import (設置自動導入)

 3、查看創建完成後的目錄結構

4、/src/main目錄下創建文件夾java,resources,並且設置源碼文件夾和資源文件夾

4、部署到Tomcat並且啓動服務 

說明:啓動成功! 

(三)創建項目結構

 1、首先創建包

2、爲了便於管理文件,在/WEB-INF目錄下new一個Directory,命名jsp,用於存放jsp文件

3、在resources資源文件夾下

  • 新建Directory:

“mapper”(用於存放xxxMapper.xml文件);

“spring”(用於存放spring-xxx.xml配置文件)。

  • 新建文件:

“jdbc.properties”(mysql數據庫配置文件);

”log4j.properties”(日誌輸出配置文件);

”mybatis-config.xml”(mybatis框架配置文件)。 

4、數據庫文件 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `paper`
-- ----------------------------
DROP TABLE IF EXISTS `paper`;
CREATE TABLE `paper` (
  `paper_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'paperID',
  `name` varchar(100) NOT NULL COMMENT 'paper名稱',
  `number` int(11) NOT NULL COMMENT 'paper數量',
  `detail` varchar(200) NOT NULL COMMENT 'paper描述',
  PRIMARY KEY (`paper_id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='paper表';

-- ----------------------------
-- Records of paper
-- ----------------------------
INSERT INTO `paper` VALUES ('1', '機器學習', '2', 'mlmlmlml');
INSERT INTO `paper` VALUES ('2', '深度學習', '3', 'dldldl');
INSERT INTO `paper` VALUES ('3', '大數據', '4', 'bdbdbd');

(四)設置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>com.wms</groupId>
    <artifactId>MavenWeb_SSM_2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>MavenWeb_SSM_2 Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <!-- 作者信息 -->
    <developers>
        <developer>
            <id>sy</id>
            <name>sy</name>
            <email>[email protected]</email>
            <url>www.sy17.com</url>
            <timezone>8</timezone>
        </developer>
    </developers>

    <properties>
        <!--項目的編譯字符格式-->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>-->
        <!--項目的java版本-->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>

        <!-- 第一部分:Spring 配置-->
        <spring.version>5.1.10.RELEASE</spring.version>

        <!-- 第二部分:Servlet web -->
        <servlet.version>3.1.0</servlet.version>
        <jsp.version>2.3.1</jsp.version>
        <jstl.version>1.2</jstl.version>
        <taglibs.standard.version>1.1.2</taglibs.standard.version>
        <jackson.databind.version>2.9.4</jackson.databind.version>

        <!-- 第三部分:數據庫和mybatis -->
        <mysql.version>8.0.17</mysql.version>
        <c3p0.version>0.9.5.5</c3p0.version>
        <!--   <mchange.commons.version>0.2.19</mchange.commons.version>--><!--c3p0輔助包-->
        <mybatis.version>3.5.3</mybatis.version>
        <mybatis.spring.version>2.0.3</mybatis.spring.version>

        <!-- 第四部分:日誌 -->
        <logback.classic.version>1.2.3</logback.classic.version>

    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <!-- 第一部分:Spring 配置-->
        <!-- Spring core -->
        <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-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- Spring DAO -->
        <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>
        <!-- Spring mvc -->
        <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>
        <!-- 第二部分:Servlet web -->
        <!-- 加入servlet的依賴 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${servlet.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- 加入jsp的依賴 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>${jsp.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- 加入jstl的依賴 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>${taglibs.standard.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.databind.version}</version>
        </dependency>
        <!-- 第三部分:數據庫和mybatis -->
        <!-- 數據庫 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <!-- 數據庫連接池 -->
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
            <version>${c3p0.version}</version>
        </dependency>
        <!--<dependency>
            <groupId>com.mchange</groupId>
            <artifactId>mchange-commons-java</artifactId>
            <version>${mchange.commons.version}</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>${mybatis.spring.version}</version>
        </dependency>
        <!-- 第四部分:日誌 -->
        <!-- 實現slf4j接口並整合 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.classic.version}</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>MavenWeb_SSM_2</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>${maven.compiler.source}</source>
                        <target>${maven.compiler.target}}</target>
                    </configuration>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

(五)設置web.xml

1、IDEA創建的web.xml木有頭文件

2、 解決方法:手動添加web.xml模板文件【File->Settings...】

3、配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
    <display-name>Archetype Created Web Application</display-name>

    <!-- 編碼過濾器開始 -->
    <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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 編碼過濾器結束 -->

    <!-- 配置前端控制器開始 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置springMVC需要加載的配置文件
        spring-dao.xml,spring-service.xml,spring-mvc.xml
        Mybatis - > spring -> springmvc-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-*.xml</param-value>
        </init-param>
        <!--用來標記是否在項目啓動時就加在此Servlet,0或正數表示容器在應用啓動時就加載這個Servlet, 當是一個負數時或者沒有指定時,則指示容器在該servlet被選擇時才加載.正數值越小啓動優先值越高 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--爲DispatcherServlet建立映射 -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!-- 攔截所有請求,千萬注意是(/)而不是(/*) -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- 配置前端控制器結束 -->

    <!--log4j配置文件-->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>

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

(六)Java 代碼

IDEA幾個快捷鍵:

  • ALT+Insert 來實現快速添加 set/get方法,構造方法,等等
  • Ctrl+I 實現接口方法

1、Paper.java

package com.wms.pojo;

public class Paper {
  private long paperId;
  private String paperName;
  private int paperNum;
  private String paperDetail;

  public long getPaperId() {
    return paperId;
  }

  public void setPaperId(long paperId) {
    this.paperId = paperId;
  }

  public String getPaperName() {
    return paperName;
  }

  public void setPaperName(String paperName) {
    this.paperName = paperName;
  }

  public int getPaperNum() {
    return paperNum;
  }

  public void setPaperNum(int paperNum) {
    this.paperNum = paperNum;
  }

  public String getPaperDetail() {
    return paperDetail;
  }

  public void setPaperDetail(String paperDetail) {
    this.paperDetail = paperDetail;
  }

  public Paper(long paperId, String paperName, int paperNum, String paperDetail) {
    this.paperId = paperId;
    this.paperName = paperName;
    this.paperNum = paperNum;
    this.paperDetail = paperDetail;
  }

  public Paper(String paperName, int paperNum, String paperDetail) {
    this.paperName = paperName;
    this.paperNum = paperNum;
    this.paperDetail = paperDetail;
  }

  public Paper() {}

  @Override
  public String toString() {
    return "Paper{"
        + "paperId="
        + paperId
        + ", paperName='"
        + paperName
        + '\''
        + ", paperNum="
        + paperNum
        + ", paperDetail='"
        + paperDetail
        + '\''
        + '}';
  }
}

2、PaperMapper.java (是和數據庫進行交互的,具體的交互過程會在配置文件{PaperMapper.xml}中體現出來

package com.wms.dao;

import com.wms.pojo.Paper;

import java.util.List;

public interface PaperMapper {
  int addPaper(Paper paper);

  int deletePaperById(long id);

  int updatePaper(Paper paper);

  Paper queryById(long id);

  List<Paper> queryAllPaper();
}

3、PaperService.java

package com.wms.service;

import com.wms.pojo.Paper;

import java.util.List;

public interface PaperService {
  int addPaper(Paper paper);

  int deletePaperById(long id);

  int updatePaper(Paper paper);

  Paper queryById(long id);

  List<Paper> queryAllPaper();
}

4、PaperServiceImpl.java

package com.wms.service.impl;

import com.wms.dao.PaperMapper;
import com.wms.pojo.Paper;
import com.wms.service.PaperService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PaperServiceImpl implements PaperService {
  @Autowired private PaperMapper paperMapper;

  @Override
  public int addPaper(Paper paper) {
    return paperMapper.addPaper(paper);
  }

  @Override
  public int deletePaperById(long id) {
    return paperMapper.deletePaperById(id);
  }

  @Override
  public int updatePaper(Paper paper) {
    return paperMapper.updatePaper(paper);
  }

  @Override
  public Paper queryById(long id) {
    return paperMapper.queryById(id);
  }

  @Override
  public List<Paper> queryAllPaper() {
    return paperMapper.queryAllPaper();
  }
}

5、PaperController.java

package com.wms.controller;

import com.wms.pojo.Paper;
import com.wms.service.PaperService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/paper")
public class PaperController {
  @Autowired private PaperService paperService;

  @RequestMapping("/allPaper")
  public String list(Model model) {
    List<Paper> list = paperService.queryAllPaper();
    model.addAttribute("list", list);
    return "allPaper";
  }

  @RequestMapping("toAddPaper")
  public String toAddPaper() {
    return "addPaper";
  }

  @RequestMapping("/addPaper")
  public String addPaper(Paper paper) {
    paperService.addPaper(paper);
    return "redirect:/paper/allPaper";
  }

  @RequestMapping("/del/{paperId}")
  public String deletePaper(@PathVariable("paperId") Long id) {
    paperService.deletePaperById(id);
    return "redirect:/paper/allPaper";
  }

  @RequestMapping("toUpdatePaper")
  public String toUpdatePaper(Model model, Long id) {
    model.addAttribute("paper", paperService.queryById(id));
    return "updatePaper";
  }

  @RequestMapping("/updatePaper")
  public String updatePaper(Model model, Paper paper) {
    paperService.updatePaper(paper);
    paper = paperService.queryById(paper.getPaperId());
    model.addAttribute("paper", paper);
    return "redirect:/paper/allPaper";
  }
}

(七)/src/resources/文件

1、PaperMapper.xml(mybatis框架mapper代理開發配置文件) _關於數據庫的增刪改查語句

<?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.wms.dao.PaperMapper">
    <resultMap type="Paper" id="paperResultMap">
        <id property="paperId" column="paper_id"/>
        <result property="paperName" column="name"/>
        <result property="paperNum" column="number"/>
        <result property="paperDetail" column="detail"/>
    </resultMap>
    <!--parameterType爲插入對象的對應實體類,useGeneratedKeys="true"表示返回自增長主鍵,keyProperty表示將返回的主鍵放到對象的制定屬性中-->
    <!-- <insert id="addPaper" parameterType="Paper" useGeneratedKeys="true" keyProperty="paperId">
         INSERT INTO paper(name,number,detail) VALUES (#{paperName}, #{paperNum}, #{paperDetail})
     </insert>-->
    <insert id="addPaper" parameterType="Paper" keyProperty="paperId">
        INSERT INTO paper(name,number,detail) VALUES (#{paperName}, #{paperNum}, #{paperDetail})
    </insert>

    <delete id="deletePaperById" parameterType="long">
        DELETE FROM paper WHERE paper_id=#{paperID}
    </delete>

    <update id="updatePaper" parameterType="Paper">
        UPDATE paper
        SET name = #{paperName},number = #{paperNum},detail = #{paperDetail}
        WHERE  paper_id = #{paperId}
    </update>

    <select id="queryById" resultMap="paperResultMap" parameterType="long">
        SELECT paper_id,name,number,detail
        FROM paper
        WHERE paper_id=#{paperId}
    </select>
    <select id="queryAllPaper" resultMap="paperResultMap">
        SELECT paper_id,name,number,detail
        FROM paper
    </select>

</mapper>

2、在resource/spring包下分別新建配置文件:spring-dao.xml , spring-mvc.xml , spring-service.xml

3、spring-dao.xml:(spring-mybatis整合配置文件)

<?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"
       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">
    <!-- 配置整合mybatis過程 -->
    <!-- 1.配置數據庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!-- 2.數據庫連接池 -->
    <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}"/>

        <!-- c3p0連接池的私有屬性 -->
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
        <!-- 關閉連接後不自動commit -->
        <property name="autoCommitOnClose" value="false"/>
        <!-- 獲取連接超時時間 -->
        <property name="checkoutTimeout" value="10000"/>
        <!-- 當獲取連接失敗重試次數 -->
        <property name="acquireRetryAttempts" value="2"/>
    </bean>

    <!-- 3.配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置MyBaties全局配置文件:mybatis.cfg.xml -->
        <property name="configLocation" value="classpath:mybatis.cfg.xml"/>
        <!-- 掃描pojo包 使用別名 -->
        <property name="typeAliasesPackage" value="com.wms.pojo"/>
        <!-- 掃描sql配置文件:mapper需要的xml文件 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
    </bean>

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

4、spring-service.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 https://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.wms.service"/>

    <!-- 配置事務管理器 -->
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 配置基於註解的聲明式事務 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

5、 spring-mvc.xml:(spring mvc配置文件)

<?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:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 配置SpringMVC -->
    <!-- 1.開啓SpringMVC註解模式 -->
    <!-- 簡化配置:
        (1)自動註冊DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter
        (2)提供一些列:數據綁定,數字和日期的format @NumberFormat, @DateTimeFormat, xml,json默認讀寫支持
    -->
    <!--該標籤使我們能夠使用更多的springmvc高級功能-->
    <mvc:annotation-driven/>

    <!-- 2.靜態資源默認servlet配置
        (1)加入對靜態資源的處理:js,gif,png
        (2)允許使用"/"做整體映射
     -->
    <!--將springmvc不能處理的請求交給tomcat,也就是實現靜態資源的放行-->
    <mvc:default-servlet-handler/>

    <!-- 3.配置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/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

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

6、mybatis-config.xml文件中配置mybtis框架

<?xml version="1.0" encoding="UTF-8"?>
<!-- 導頭文件 -->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- mybatis的核心配置文件 -->
<configuration>
    <settings>
        <!-- 使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值 -->
        <setting name="useGeneratedKeys" value="true"/>

        <!-- 使用列別名替換列名 默認:true -->
        <setting name="useColumnLabel" value="true"/>

        <!-- 開啓駝峯命名轉換:Table{create_time} -> Entity{createTime} -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

7、jdbc.properties文件中配置mysql數據庫——注意數據庫版本,driverClass不同之處

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm2?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=123456

8、log4j.properties文件中配置日誌設定

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

(八)jsp文件

1、修改index.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" %>
<%
    pageContext.setAttribute("path", request.getContextPath());
%>
<!DOCTYPE HTML>
<html>
<head>
    <title>首頁</title>
    <style type="text/css">
        a {
            text-decoration: none;
            color: black;
            font-size: 18px;
        }

        h3 {
            width: 180px;
            height: 38px;
            margin: 100px auto;
            text-align: center;
            line-height: 38px;
            background: deepskyblue;
            border-radius: 4px;
        }
    </style>
</head>
<body>
<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    基於SSM框架的管理系統:簡單實現增、刪、改、查。
                </h1>
            </div>
        </div>
    </div>
</div>
<br><br>
<h3>
    <a href="${path}/paper/allPaper">點擊進入管理頁面</a>
</h3>
</body>
</html>

2、在WEB-INF/jsp包下分別新建addPaper,jsp , allPaper.jsp , updatePaper.jsp

3、allPaper.jsp:所有論文顯示界面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/1/8
  Time: 16:14
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%
    pageContext.setAttribute("path", request.getContextPath());
%>
<html>
<head>
    <title>Paper列表</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 引入 Bootstrap -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    基於SSM框架的管理系統:簡單實現增、刪、改、查。
                </h1>
            </div>
        </div>
    </div>

    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    <small>論文列表 —— 顯示所有論文</small>
                </h1>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-4 column">
            <a class="btn btn-primary" href="${path}/paper/toAddPaper">新增</a>
        </div>
    </div>
    <div class="row clearfix">
        <div class="col-md-12 column">
            <table class="table table-hover table-striped">
                <thead>
                <tr>
                    <th>論文編號</th>
                    <th>論文名字</th>
                    <th>論文數量</th>
                    <th>論文詳情</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <c:forEach var="paper" items="${requestScope.get('list')}" varStatus="status">
                    <tr>
                        <td>${paper.paperId}</td>
                        <td>${paper.paperName}</td>
                        <td>${paper.paperNum}</td>
                        <td>${paper.paperDetail}</td>
                        <td>
                            <a href="${path}/paper/toUpdatePaper?id=${paper.paperId}">更改</a> |
                            <a href="${path}/paper/del/${paper.paperId}">刪除</a>
                        </td>
                    </tr>
                </c:forEach>
                </tbody>
            </table>
        </div>
    </div>
</div>

4、addPaper,jsp:論文添加頁面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/1/8
  Time: 16:13
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%
    pageContext.setAttribute("path", request.getContextPath());
%>
<html>
<head>
    <title>新增論文</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 引入 Bootstrap -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    基於SSM框架的管理系統:簡單實現增、刪、改、查。
                </h1>
            </div>
        </div>
    </div>

    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    <small>新增論文</small>
                </h1>
            </div>
        </div>
    </div>
    <form action="" name="userForm">
        論文名稱:<input type="text" name="paperName"><br><br><br>
        論文數量:<input type="text" name="paperNum"><br><br><br>
        論文詳情:<input type="text" name="paperDetail"><br><br><br>
        <input type="button" value="添加" οnclick="addPaper()">
    </form>

    <script type="text/javascript">
        function addPaper() {
            var form = document.forms[0];
            form.action = "${path}/paper/addPaper";
            form.method = "post";
            form.submit();
        }
    </script>
</div>

5、updatePaper.jsp:論文更改界面

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2020/1/8
  Time: 16:14
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%
    pageContext.setAttribute("path", request.getContextPath());
%>
<html>
<head>
    <title>修改論文</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 引入 Bootstrap -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    基於SSM框架的管理系統:簡單實現增、刪、改、查。
                </h1>
            </div>
        </div>
    </div>

    <div class="row clearfix">
        <div class="col-md-12 column">
            <div class="page-header">
                <h1>
                    <small>修改論文</small>
                </h1>
            </div>
        </div>
    </div>

    <form action="" name="userForm">
        <input type="hidden" name="paperId" value="${paper.paperId}"/>
        論文名稱:<input type="text" name="paperName" value="${paper.paperName}"/>
        論文數量:<input type="text" name="paperNum" value="${paper.paperNum}"/>
        論文詳情:<input type="text" name="paperDetail" value="${paper.paperDetail }"/>
        <input type="button" value="提交" οnclick="updatePaper()"/>
    </form>
    <script type="text/javascript">
        function updatePaper() {
            var form = document.forms[0];
            form.action = "${path}/paper/updatePaper";
            form.method = "post";
            form.submit();
        }
    </script>
</div>

(九)web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">
    <display-name>Archetype Created Web Application</display-name>

    <!-- 編碼過濾器開始 -->
    <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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 編碼過濾器結束 -->

    <!-- 配置前端控制器開始 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置springMVC需要加載的配置文件
        spring-dao.xml,spring-service.xml,spring-mvc.xml
        Mybatis - > spring -> springmvc-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-*.xml</param-value>
        </init-param>
        <!--用來標記是否在項目啓動時就加在此Servlet,0或正數表示容器在應用啓動時就加載這個Servlet, 當是一個負數時或者沒有指定時,則指示容器在該servlet被選擇時才加載.正數值越小啓動優先值越高 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--爲DispatcherServlet建立映射 -->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!-- 攔截所有請求,千萬注意是(/)而不是(/*) -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- 配置前端控制器結束 -->

    <!--log4j配置文件-->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>classpath:log4j.properties</param-value>
    </context-param>

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

(十) 單元測試

package com.wms;

import com.wms.pojo.Paper;
import com.wms.service.PaperService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

// 在Spring容器環境下執行
@RunWith(SpringJUnit4ClassRunner.class)
// 指定配置文件
@ContextConfiguration(locations = {"classpath:spring/spring-*.xml"})
public class PaperTest {
  @Autowired private PaperService paperService;

  @Test
  public void test1() {
    List<Paper> paperList = paperService.queryAllPaper();
    System.out.println(paperList);
  }

  @Test
  public void test2() {
    Paper paper = new Paper("大數據", 23, "bdbdbd");
    paperService.addPaper(paper);
    System.out.println(paper);
  }
}

(十一)運行查看

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章