文章目录

  • 前言
  • 一、创建一个工程
  • 二、补充结构
    • 1.引入Jar包
    • 2.完善层级结构
  • 三、创建层:dao、service和controller
    • 1.创建对应表的实体类,需要set、get、toString方法
    • 2.创建dao层接口和方法
    • 3.创建Service层接口
    • 3.创建Service层方法
    • 4.创建Controller层方法
  • 四、创建配置文件
    • 1.DeptMapper.xml(Mybatis方法映射文件)
    • 2 database.properties 数据库配置文件
    • 3 log4j.properties
    • 4 mybatis-config.xml
    • 5 配置dispacher-servlet.xml MVC核心配置文件
    • 6 配置application-context.xml
  • 五、创建测试页面
    • 1.修改index.jsp页面
    • 2.创建success.jsp页面
  • 六、在Tomcat上的部署和运行
    • 1.配置部署环境
    • 2.选择本地的tomcat环境作为部署环境
    • 3.完成首页的环境配置
    • 4.重要:选择打包的方式并运行,需要选择WAR包!
    • 5.点击运行后,部署成功呈现如下界面

前言

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
在如下页面,添加属性archetypeCatelog=internal,用于快速创建目录。我本人的经验是,不添加该命令语句的话,新建项目后Maven首次加载会很慢。

二、补充结构

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>


2.完善层级结构

按照下图所示,将文件结构补充完整。
目录下的配置文件解读:
-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;}@Overridepublic 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 {@Resourceprivate DeptDao deptdeptDao;@Overridepublic 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 {@Resourceprivate 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 mapperPUBLIC "-//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 configurationPUBLIC "-//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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://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.配置部署环境

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

3.完成首页的环境配置

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



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





手把手教你快速搭建SSM框架相关推荐

  1. 手把手教你快速搭建私服环境

    手把手教你快速搭建私服环境,简单实用,一看就懂 1.准备工作:先下载Nxus Nexus 是 Maven 仓库管理器, 通过 nexus 可以搭建 maven 仓库,同时 nexus 还提供强大的仓库 ...

  2. 手把手教你快速搭建 EOS 主网见证人节点(BP)

    EOS主网启动至今已经超过一个月,然而截至当前,注册成为EOS Block Producer(大家习惯称为见证人)的账号仅有393个,活跃的EOS BP节点更是仅有376个,远远不如EOS主网上线前我 ...

  3. 手把手教你快速搭建一个代码在线编辑预览工具

    简介 大家好,今天我跟大家分享的是一个代码在线编辑预览工具的实现教程,手把手教你完成这样一个项目. 目前这类工具使用很广泛,常见于各种文档网站及代码分享场景,相关工具也比较多,如codepen.jsr ...

  4. idea快速搭建ssm框架

    工具:idea 服务器:tomcat 数据库:mysql 准备:Maven仓库(idea自带有,但是下载依赖很慢,这里我用自己下载的Maven仓库) 时间:40分钟左右 第一步:创建Maven项目 我 ...

  5. 手把手教你快速搭建个人博客 Hexo + Github

    平时学习查找资料发现了很多个人博客,搭建的很不错,一直想抽空自己也动手实践一下,正好趁着新型冠状肺炎这段宅在家的空,赶紧搭建一下自己的个人博客 先来预览一下博主的个人博客:Fly's Blog 动手能 ...

  6. 手把手教您快速搭建壁纸网站

    壁纸网站源码介绍 这是一款全自动在线采集高清壁纸网站源码,壁纸网站源码上传到网站空间,就立马拥有您的壁纸网站,网站内置壁纸api接口,会自动采集. 壁纸网站搭建 壁纸网站源码上传到宝塔网站文件目录中 ...

  7. 手把手教你搭建SSM框架(Eclipse版)

    作者: C you again,从事软件开发 努力在IT搬砖路上的技术小白 公众号: [C you again],分享计算机类毕业设计源码.IT技术文章.游戏源码.网页模板.程序人生等等.公众号回复 ...

  8. 手把手教你如何搭建一个自己的安卓快速开发框架之带你做自己的APP(二)

    ####点击查看上一篇文章:手把手教你如何搭建一个自己的安卓快速开发框架之BaseActivity(一) 继上一篇我实现了基本的BaseActivity,包含 ToolBar 透明状态栏 生命周期监控 ...

  9. 手把手教你快速搞定4个职场写作场景

    " [写作能力提升]系列文章: 为什么建议你一定要学会写作? 手把手教你快速搞定 4 个职场写作场景 5 种搭建⽂章架构的⽅法"免费赠送! " 一.前言 Hello,我是 ...

最新文章

  1. ie8加载js太慢_js ie8 慢
  2. Coefficients: (1 not defined because of singularities)
  3. Go 语言 bytes.buffer write 相关操作
  4. (Object-C)学习笔记(一)--开发环境配置和与c语言的区别
  5. Vue 生命周期中 mounted( ) 和 created( ) 的区别
  6. J2EE如何生成验证码图片和点击刷新验证码
  7. 第12章 数据库完整性
  8. 关于iOS声音识别的框架
  9. android pm命令用法
  10. java为什么序列化_什么是Java序列化、为什么要序列化、JAVA序列化有哪些方式(性能由低至高)...
  11. 前端验证手机号和座机号号码
  12. lisp如何将度分秒转换为弧度_1/16怎么转换成角度(度分秒)??
  13. cmd命令跳舞代码_Golang语言元编程之代码生成
  14. NLP(自然语言处理)基本入门之分词操作
  15. “互联网+”带给云计算的机会
  16. 如何把密度函数化为标准正态二维分布_数理统计第四讲(次序统计量续,伽马分布)...
  17. 计算机运行瓶颈,我的电脑瓶颈在哪呢?
  18. requests爬取英雄联盟皮肤图片
  19. 移动端VUE实现一周课程表
  20. 50个直击灵魂的问题_直击心灵的48个问题

热门文章

  1. 整数拆分问题的四种解法
  2. MOOS-ivp 实验三 MOOS简介(2)
  3. android 手电筒服务,Android手电筒案例
  4. 【好记性不如烂笔头】二叉树之利用先序中序还原树
  5. discuz 搬迁服务器时,根域名访问 主动跳到 门户列表页问题
  6. 内存池简单实现(一)
  7. APISpace 行驶证OCR 方便好用
  8. Graphviz画决策树中文乱码解决
  9. 【Docker】——镜像
  10. Android中出现的各种错误