使用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

猜你喜欢

转载自blog.csdn.net/qq_41518597/article/details/102915447