共计 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/…
后续还会创作几篇如何疾速应用此我的项目欠缺后盾逻辑,欢送关注
欢送关注微信公众号,文章会首发在微信公众号。
能够搜寻公众号名‘’杰克的程序人生‘’
师者,所以传道授业解惑也,教师节高兴