欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

手把手教你快速搭建SSM框架

程序员文章站 2024-01-18 23:02:34
...


前言

SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层。

Spring:Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

SpringMVC:SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。

mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。


一、创建一个工程

创建一个新Maven项目或者模块,需要选择Maven-webapp
手把手教你快速搭建SSM框架在如下页面,添加属性archetypeCatelog=internal,用于快速创建目录。我本人的经验是,不添加该命令语句的话,新建项目后Maven首次加载会很慢。手把手教你快速搭建SSM框架

二、补充结构

1.引入Jar包

-1 系统工具类:JUnit、log4j
-2 数据库相关:MySql、druid
-3 Mybatis相关:mybatis-spring
-4 Spring相关:spring-context、spring-jdbc、spring-tx
-5 SpringMVC相关:spring-webmvc

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.30</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.3.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.18</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.2</version>
    </dependency>
  </dependencies>

手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架

2.完善层级结构

按照下图所示,将文件结构补充完整。
手把手教你快速搭建SSM框架目录下的配置文件解读:
-1.mappers/*.xml:mybatis的jdbc操作和管理核心映射文件。
-2.application-context.xml:spring核心配置文件
-3.database.properties:数据库的配置文件
-4.dispacher-servlet.xml:Spring-MVC核心配置文件
-5.log4j.properties:log4j日记配置文件
-6.mybatis-config.xml:mybatis核心配置文件
-7.web.xml:以上各文件的调用和调配文件。

三、创建层:dao、service和controller

1.创建对应表的实体类,需要set、get、toString方法

package com.tonytjau.newexssm.entity;

public class Dept {
    private int deptno;
    private String dname;
    private String loc;

    public int getDeptno() {
        return deptno;
    }

    public void setDeptno(int deptno) {
        this.deptno = deptno;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }

    public String getLoc() {
        return loc;
    }

    public void setLoc(String loc) {
        this.loc = loc;
    }

    @Override
    public String toString() {
        return "Dept{" +
                "deptno=" + deptno +
                ", dname='" + dname + '\'' +
                ", loc='" + loc + '\'' +
                '}';
    }
}

2.创建dao层接口和方法

注意,由于dao层这次直接和数据库进行交互,因此无需创建其实体类来进行模拟方法的实现和调用。
1.Dept的dao层接口

package com.tonytjau.newexssm.dao;

import com.tonytjau.newexssm.entity.Dept;

public interface DeptDao {
    //声明一个方法,用于在数据库中添加职员。
    public int addDept(Dept dept);
}

3.创建Service层接口

package com.tonytjau.newexssm.service;

import com.tonytjau.newexssm.entity.Dept;

public interface DeptService {
    public int addDept(Dept dept);
}

3.创建Service层方法

package com.tonytjau.newexssm.service;

import com.tonytjau.newexssm.entity.Dept;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

//进行注解开发
@Service
public class DeptServiceImpl implements DeptService {
    @Resource
    private DeptDao deptdeptDao;
    @Override
    public int addDept(Dept dept) {
        return deptDao.addDept(dept);
    }
}

4.创建Controller层方法

package com.tonytjau.newexssm.controller;

import com.tonytjau.newexssm.entity.Dept;
import com.tonytjau.newexssm.service.DeptService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
@Controller
@RequestMapping("/dept")
public class DeptController {
    @Resource
    private DeptService deptService;
    @RequestMapping("/addDept")
    public String register(Dept dept){
        deptService.addDept(dept);
        System.out.println("注册成功");
        return "success";
    }
}

四、创建配置文件

1.DeptMapper.xml(Mybatis方法映射文件)

<?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.tonytjau.newexssm.dao.DeptDao">
    <insert id="addDept" parameterType="Dept">
        insert into dept(deptno,dname,loc) value (#{deptno},#{dname},#{loc});
    </insert>
</mapper>

2 database.properties 数据库配置文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/netbar?useUnicode=true&characterEncoding=utf-8
user=root //此处需要注意,如果写username的话,将会和mybatis和druid的数据源内的读取参数命名发生冲突,因此需要改写其他名称。
password=111111

3 log4j.properties

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

4 mybatis-config.xml

此处需要注意的是,由于mybatis整合了spring框架,因此将mybatis的大部分配置属性转移至spring的application上了。

<?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">
<configuration>
    <!--1.配置log4j-->
    <settings>
        <setting name="logImpl" value="Log4J"/>
    </settings>
    <!--2.配置别名-->
    <typeAliases>
        <package name="com.tonytjau.newexssm.entity"/>
    </typeAliases>
</configuration>

5 配置dispacher-servlet.xml 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: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-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <!--1.开启注解支持-->
    <context:annotation-config></context:annotation-config>
    <!--2.扫描制定基准包-->
    <context:component-scan base-package="com.tonytjau.controller"></context:component-scan>
    <!--3.配置MVC注解支持-->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!--4.配置视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

6 配置application-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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
           http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
        ">

    <!--1.开启注解支持-->
    <context:annotation-config></context:annotation-config>
    <!--2.配置组件包扫描的位置-->
    <context:component-scan base-package="com.tonytjau"></context:component-scan>
    <!--3.读取数据库参数配置文件-->
    <context:property-placeholder location="classpath:database.properties"></context:property-placeholder>
    <!--4.配置阿里巴巴druid数据源 采用连接池来配置-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${driver}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${user}"></property>
        <property name="password" value="${password}"></property>
        <property name="initialSize" value="1"></property>
        <property name="maxActive" value="100"></property>
        <property name="maxWait" value="60000"></property>
    </bean>
    <!--5.配置SqlSeesionFactory回话工厂对象-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--注入数据源-->
        <property name="dataSource" ref="dataSource"></property>
        <!--读取映射文件-->
        <property name="mapperLocations">
            <list>
                <value>classpath:Mappers/DeptMapper.xml</value>
            </list>
        </property>
        <!--配置Mybatis的全局配置文件-->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
    <!--6.配置映射器,使用包扫描创建代理对象-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.tonytjau.dao"></property>
    </bean>
</beans>

五、创建测试页面

1.修改index.jsp页面

<%@page pageEncoding="utf-8" %>
<body>
<h2>用户注册</h2>
<form action="dept/addDept" method="get">
ID:<input name="deptno">
    用户名:<input name="dname">
    部门<input name="loc">
    <input type="submit" value="register">
</form>
</body>
</html>

2.创建success.jsp页面

这个“success”对应的是controller最后的跳转字符串的内容)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
success!
</body>
</html>

六、在Tomcat上的部署和运行

1.配置部署环境

手把手教你快速搭建SSM框架

2.选择本地的tomcat环境作为部署环境

手把手教你快速搭建SSM框架

3.完成首页的环境配置

手把手教你快速搭建SSM框架

4.重要:选择打包的方式并运行,需要选择WAR包!

手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架

5.点击运行后,部署成功呈现如下界面

手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架
手把手教你快速搭建SSM框架