关于java:基于SSM框架快速搭建maven后台项目

4次阅读

共计 14277 个字符,预计需要花费 36 分钟才能阅读完成。

基于 SSM 框架疾速搭建 maven 后盾我的项目

环境筹备

1.IntelliJ IDEA

2.Maven

https://maven.apache.org/

3.MYSQL

https://www.mysql.com/

4.Tomcat

http://tomcat.apache.org/

5.JDk

https://www.oracle.com/java/t…

SSM 框架简介

无论你是前端,APP,后端开发工程师,搭建一个本人的后盾对于学习都是很有帮忙的,本文是作者搭建 SSM 后端环境的记录,浏览完本文你也能够疾速搭建一个属于本人的后端代码。

SSM 框架 是 Spring MVC,Spring 和 Mybatis框架 的整合,是规范的 MVC 模式,将整个零碎划分为 View 层,Controller 层,Service 层,DAO 层四层,应用 Spring MVC 负责申请的转发和视图治理,Spring 实现业务对象治理,Mybatis 作为数据对象的长久化引擎。

数据库配置

首先咱们创立一个数据库和表。

创立数据库的 SQL

CREATE DATABASE time_manager_app

创立数据表的 SQL

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (`id` int(8) NOT NULL COMMENT '主键',
  `name` varchar(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

向数据表中插入一条数据

INSERT INTO `user` VALUES ('1', '1');

创立工程

当初咱们关上 IDEA 创立咱们的 maven 工程

File->New->Project

抉择 maven, 选中红框中的选项,点击 Next

红框中的两个选项轻易输出,点击 Next

红框中抉择本地装置的 maven 软件的地位,点击 Next

点击 finish

当初咱们的 maven 工程就创立好了

接下来咱们要创立一些工程须要的文件夹

右键抉择 SRC->NEW->Directory

创立好的文件目录如下

右键 JAVA 将它设置为 Source Root

右键 resource 将它设置为 Resources Root

工程创立结束,接下来咱们编写咱们须要的配置文件

配置文件编写

首先咱们在 POM.XML 中增加咱们须要的依赖包

留神,复制时从备注里的 copy 开始, 复制到 copy 完结,不要整个文件复制

<?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.ssmtest</groupId>
    <artifactId>ssmtest</artifactId>
    <version>1.0-SNAPSHOT</version>
      <!-- 从这里开始 copy -->
    <!-- 用来设置版本号 -->
    <properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <mybatis.version>3.2.8</mybatis.version>
        <slf4j.version>1.7.12</slf4j.version>
        <log4j.version>1.2.17</log4j.version>
        <druid.version>1.0.9</druid.version>
    </properties>
  
    <!-- 用到的 jar 包 -->
    <dependencies>
        <!-- 单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <!-- 示意开发的时候引入,公布的时候不会加载此包 -->
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>1.6.8</version>
        </dependency>
        <!-- spring 框架包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</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-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</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>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</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>
        <!-- spring 框架包 -->
        <!-- mybatis 框架包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.2.2</version>
        </dependency>
        <!-- mybatis 框架包 -->
        <!-- 数据库驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.35</version>
        </dependency>
        <!-- 导入 dbcp 的 jar 包,用来在 applicationContext.xml 中配置数据库 -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- jstl 标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!-- log -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <!-- 退出对 json 转换 -->
        <!-- JSON: jackson -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.jr</groupId>
            <artifactId>jackson-jr-all</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.46</version>
        </dependency>
        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>jackwu</finalName>
        <!-- java 编译插件, 如果 maven 的设置里配置好 jdk 版本就不必 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>

        <!-- 打包配置文件 -->
        <resources>
            <resource>
                <directory>src\main\resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.tld</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src\main\java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>
    </build>
    <!--copy 在这里完结 -->

</project>

PS: 如果你的网络环境不好,Maven 下载依赖包须要一段时间,不要焦急,持续接下来的配置就能够了

接下来咱们在 WEB-INF 目录下创立 web.xml

web.xml 内容如下,整个 copy 就能够

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- 配置加载类门路的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:applicationContext.xml</param-value>
    </context-param>

    <!-- 配置监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
    </listener>

    <!-- 解决中文乱码过滤器 -->
    <filter>
        <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!-- 前端控制器(加载 classpath:springmvc.xml 服务器启动创立 servlet)-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置初始化参数,创立完 DispatcherServlet 对象,加载 springmvc.xml 配置文件 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <!-- 服务器启动的时候,让 DispatcherServlet 对象创立 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>



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

接着咱们在 resources 文件夹下创立 applicationContext.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:aop="http://www.springframework.org/schema/aop"
       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/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 开启注解扫描,治理 service 和 dao -->
    <context:component-scan base-package="service">
    </context:component-scan>
    <context:component-scan base-package="dao">
    </context:component-scan>

    <context:property-placeholder location="classpath:db.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}"/>
    </bean>
    <!-- 把交给 IOC 治理 SqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>

    </bean>
    <!-- 扫描 dao 接口 -->
    <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="dao"/>
    </bean>

    <!-- 配置 Spring 的申明式事务管理 -->
    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

接着咱们在 resource 文件夹下创立 spring-mvc.xml

同样内容整个复制

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/mvc
           http://www.springframework.org/schema/mvc/spring-mvc.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
           http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd
           ">

    <!-- 扫描 controller 的注解,别的不扫描 -->
    <context:component-scan base-package="controller">
    </context:component-scan>

    <!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- JSP 文件所在的目录 -->
        <property name="prefix" value="/pages/" />
        <!-- 文件的后缀名 -->
        <property name="suffix" value=".jsp" />
    </bean>


    <!-- 开启对 SpringMVC 注解的反对 -->
    <mvc:annotation-driven />

    <!--
        反对 AOP 的注解反对,AOP 底层应用代理技术
        JDK 动静代理,要求必须有接口
        cglib 代理,生成子类对象,proxy-target-class="true" 默认应用 cglib 的形式
    -->

    <!--
        反对 AOP 的注解反对,AOP 底层应用代理技术
        JDK 动静代理,要求必须有接口
        cglib 代理,生成子类对象,proxy-target-class="true" 默认应用 cglib 的形式
    -->
    <aop:aspectj-autoproxy proxy-target-class="true"/>
    <!-- 输入对象转 JSON 反对 -->
    <bean
            class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean
                        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/html;charset=UTF-8</value>
                            <value>text/plain;charset=UTF-8</value>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </list>
        </property>
    </bean>

</beans>

接着咱们在 resource 文件夹下创立 db.properties

同样内容整个复制

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/time_manager_app?characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

当初咱们的工程文件构造是这样的

接下来咱们要编写咱们的 java 代码

Java 代码编写

首先咱们创立几个须要的文件夹

接着咱们在相应的文件夹下创立咱们的 java 文件

文件构造如下

每个文件下的代码如下

UserController

package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import service.UserService;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/find.do")
    @ResponseBody
    public Object findAll(){Object a = userService.findAll();
        System.out.println(a);
        return  a;
    }
}

UserDao

package dao;

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

import java.util.List;

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

User

package pojo;

public class User {
    private int id;
    private String name;

    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;}
}

UserServiceImpl

package service.impl;

import dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import pojo.User;
import service.UserService;

import java.util.List;

@Service
@Transactional
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    public List<User> findAll(){return  userDao.findAll();
    }
}

UserService

package service;

import pojo.User;

import java.util.List;

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

到这里代码应该是没有谬误的. 如果有谬误,可能是依赖包没有下载好,期待一下

接下来咱们配置 tomcat

配置 tomcat

点击 idea 右上角的地位,接着点击 edit

按程序点击红色框的地位

在红框处抉择 tomcat 版本

接着配置咱们的 war 包,点击红色框处

抉择第二个

清空 application context 中的内容,点击 apply

NO NO NO 配置两头咱们呈现了一个问题

应该把 resource 文件夹更名为 resources Sorry

正确的工程门路如下

启动程序

接下来咱们要启动咱们的程序,测试是否配置胜利

按程序点击红框处

期待打包胜利,会呈现 target 文件夹,控制台 log 如下

接着点击绿色箭头,启动程序

测试

关上咱们的浏览器,输出 http://localhost:8080/user/find.do

Amazing 数据库中的一条数据曾经胜利返回了,到此咱们的 SSM 工程配置胜利。

代码仓库地位

如果你感觉配置太麻烦,你也能够在 github 上下载作者配置好的我的项目

我的项目地址 https://github.com/jack0-0wu/…

后续还会创作几篇如何疾速应用此我的项目欠缺后盾逻辑,欢送关注

欢送关注微信公众号,文章会首发在微信公众号。
能够搜寻公众号名‘’杰克的程序人生‘’

师者,所以传道授业解惑也,教师节高兴

正文完
 0