使用idea進行(springmvc+spring+mybatis)SSM整合

首先做好一系列準備工作,將環境搭建好

第一步、 springmvc與spring的整合

這裏我使用的是idea工具來實現整合,沒有使用eclipse;
同時創建的是maven工程
前期準備:
創建web工程骨架,maven工程

包結構搭建好,如圖
在這裏插入圖片描述

十個前期配置
在這裏插入圖片描述

配置一 ssm配置如下

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!--log4j-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <!--web項目需要的jsp 和 servlet規範-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.3.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!--數據庫需要的mysql 以及連接池-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>


    <!--springmvc 和 spring整合需要的依賴-->
    <!--spring依賴jar包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>
    <!--springmvc依賴-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>


  </dependencies>

配置二 jdbc.properties配置如下

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/此處填數據庫名稱
db.username=此處填數據庫用戶名
db.password=此處填數據庫連接密碼

配置三 log4j.properties配置如下

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE

# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n


配置四 web.xml配置如下

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
  
  	  <!--前端控制器的配置-->
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <!--保證已創建前端控制器就加載springmvc配置-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <!--一旦服務器開啓就創建前端控制器-->
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
	<!--配置post請求字符集編碼亂碼問題的過濾-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/</url-pattern>
  </filter-mapping>
</web-app>

配置五 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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:component-scan base-package="com.ssm.web"/>
    <!--配置視圖解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前綴和後綴-->
        <property name="prefix" value="/WEB-INF/pages/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!--配置其他組件-->
    <mvc:annotation-driven></mvc:annotation-driven>
</beans>

配置六 index.jsp編寫

<%--
  Created by IntelliJ IDEA.
  User: miao
  Date: 2019/11/4
  Time: 20:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>spring-mvc和spring的整合</title>
</head>
<body>
<h4>恭喜springmvc測試成功</h4>
<form action="/user/userHello" method="post">
用戶名:<input type="text" name="name">
密  碼:<input type="password" name="pwd">
        <input type="submit">
</form>
</body>
</html>

代碼7 ok.jsp編寫

<%--
  Created by IntelliJ IDEA.
  User: miao
  Date: 2019/11/5
  Time: 14:26
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>springmvc-邏輯視圖轉物理視圖</title>
</head>
<body>
<h4>springmvc-邏輯視圖轉物理視圖成功!!!</h4>
</body>
</html>

代碼八 實體類User編寫

package com.ssm.pojo;

import java.io.Serializable;

public class User implements Serializable {
    private int id;
    private String name;
    private String pwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

代碼九 Controller類編寫

package com.ssm.web;

import com.ssm.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/userHello")
    public String userHello(User user){
        System.out.println("user==>"+user);
        return "ok";
    }
}

配置十 tomcat的配置
這個項目我選用的tomcat8,可以根據自己需要選用合適的版本
在這裏插入圖片描述

到這,spring和springmvc的整合就可以了,相對來說比較簡單,因爲springmvc本身就是spring的一個子框架,所以整合起來還是比較簡單的
在這裏插入圖片描述
項目連接
鏈接:https://pan.baidu.com/s/1Cv2nrrH2ibafY0jeJTAAjg
提取碼:jyim

第二步、 springmvc、spring與mybatis的整合

需要用到相關類和接口以及配置文件展示
在這裏插入圖片描述
還有一點是數據庫腳本,創建一個簡單的數據庫表,進行相關的測試即可
下面是我的表,供參考,注意實體類屬性要和表的字段一一對應,這樣方便查詢
在這裏插入圖片描述

步驟1、 pom文件依賴導入
在這裏說一下,上面springmvc和spring的整合的時候,導入了c3p0的依賴,是這樣子的

<dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>

但是在進行spring和mybatis整合的時候
建議最好以下面的形式導入依賴,
不然可能訪問數據庫的時候會出現500錯誤

<dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
    </dependency>
 <!--spring和mybatis整合需要用到的jar包-->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.5.1</version>
      </dependency>

      <!--spring和mybatis-->
      <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>2.0.1</version>
      </dependency>

    <!--事務控制-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.1.8.RELEASE</version>
    </dependency>

    <!--q切面-->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>

    <!--jstl-->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

步驟2、 spring配置文件

<?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 https://www.springframework.org/schema/context/spring-context.xsd">
    <!--引入jdbc配置-->
    <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
    <!--包掃描-->
    <context:component-scan base-package="com.ssm.service"></context:component-scan>


    <!--將mybatis的相關配置抽取出來放到這裏-->
    <!--mybatis有兩大配置,環境,和映射配置位置-->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${db.driver}"/>
        <property name="jdbcUrl" value="${db.url}"/>
        <property name="user" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
    </bean>
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ssm.dao"></property>
    </bean>
    <!--需要用到sqlsession-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

<!--聲明式事務的配置-->
    
    <!--配置事務管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--配置通知-->
    <tx:advice id="interceptor" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*" propagation="REQUIRED"/>
        </tx:attributes>        
    </tx:advice>
    <!--配置aop-->
    <aop:config>
        <!--聲明切點-->
        <aop:pointcut id="pc" expression="execution(* com.ssm.service..*(..))"/>
        <!--配置切面(通知+切點)-->
        <aop:advisor advice-ref="interceptor" pointcut-ref="pc"></aop:advisor>
    </aop:config>

</beans>

步驟3、 web.xml配置文件

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!--監聽-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
	<!--上面是mybatis和spring整合需要配置的-->


  <!--下面是springmvc和spring整合需要配置的-->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/</url-pattern>
  </filter-mapping>
</web-app>

步驟4、 實體類
在進行springmvc和spring的整合的時候不需要強制要求實體類User的屬性與數據庫表中字段一致,但是當ssm三個整合的時候需要將實體類的屬性和數據庫表字段對應起來

package com.ssm.pojo;

import java.io.Serializable;

public class User implements Serializable {
    private int id;
    private String name;
    private String pwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

步驟5、 service接口
查詢所有

package com.ssm.service;

import com.ssm.pojo.User;

import java.util.List;

public interface IUserService {
    public List<User> findAll();
}

步驟6、 service接口的實現類

package com.ssm.service.impl;

import com.ssm.dao.IUserDAO;
import com.ssm.pojo.User;
import com.ssm.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UserServiceImpl implements IUserService {
    @Autowired
    private IUserDAO dao;
    @Override
    public List<User> findAll() {
        return dao.findAll();
    }
}

步驟7、 數據持久層接口

package com.ssm.dao;

import com.ssm.pojo.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface IUserDAO {
    @Select("select * from user")
    public List<User> findAll();
}

步驟8、 控制類

package com.ssm.web;

import com.ssm.pojo.User;
import com.ssm.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private IUserService userService;
//    springmvc和spring測試
    @RequestMapping("/userHello")
    public String userHello(User user){
        System.out.println("user==>"+user);
        return "ok";
    }

    //    ssm測試
    @RequestMapping("/userList")
    public ModelAndView userHello(){
        ModelAndView modelAndView = new ModelAndView();
        List<User> userLists = userService.findAll();
        modelAndView.setViewName("userList");
        modelAndView.addObject("list",userLists);
        return modelAndView;
    }
}

步驟9、 index.jsp首頁編輯
添加一個a標籤的連接即可

<%--
  Created by IntelliJ IDEA.
  User: miao
  Date: 2019/11/4
  Time: 20:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>spring-mvc和spring的整合</title>
</head>
<body>
<h4>恭喜springmvc測試成功</h4>
<form action="/user/userHello" method="post">
用戶名:<input type="text" name="name">
密  碼:<input type="text" name="pwd">
        <input type="submit">
</form>
<br>
<a href="/user/userList">用戶列表展示</a>
</body>
</html>

步驟10、 跳轉頁面,數據展示

<%--
  Created by IntelliJ IDEA.
  User: miao
  Date: 2019/11/5
  Time: 16:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>用戶列表展示</title>
</head>
<body>
<table border="1px" align="center">
    <tr>
        <td>id</td>
        <td>用戶名</td>
        <td>密碼</td>
    </tr>

    <c:forEach  items="${list}" var="i">
        <tr>
            <td>${i.id}</td>
            <td>${i.name}</td>
            <td>${i.pwd}</td>
        </tr>
    </c:forEach>

</table>
</body>
</html>

以上步驟全部完成,ssm整合即完畢
測試展示

在這裏插入圖片描述
項目鏈接
鏈接:https://pan.baidu.com/s/1B-zy-UGpWIGkrk0_96ODlA
提取碼:fqvm

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