SSM框架——干净详细的整合学习教程(Spring+SpringMVC+MyBatis)
一、SpringMVC概述
熟悉MVC的同学都知道,MVC即model(模型)、view(视图)、controller(控制),用一种业务逻辑,数据,界面显示分离的方式使得开发更加的便捷高效,具有低耦合,高重用性,可维护性等优点。
因此,SpringMVC分为用户界面层(view)、web层(controller)、领域模型层(model)。
用户界面层:有两个重要的接口 org.springframework.web.servlet.View接口呈现了web应用程序的视图或者页面,它负责将客户端请求操作的结果转化为一个客户端可见的表单。通俗的讲就是页面的展示,springmvc支持了JSP、Freemarker、Velocity、XSTL、JasperReport、Excel和PDF。 org.springframework.web.servlet.viewResolver提供了一个间接层,ViewResolver提供了视图实例与逻辑名称的映射。
例如,一个文件名为/WEB-INF/jsp/success.jsp的jsp页面,通过”success”名称被引用,使得视图和代码引用解耦。
web层:关键词Controller、ModelAndView springmvc提供了一个org.springframework.web.servlet.mvc.Controller接口及其他。Controller负责接收HttpServletRequest和HttpServletResponse,将请求导航到指定路径的方法中,并且组装了一个ModelAndView,包含了一个相应所有数据的map以及一个view的名称引用。
领域模型层:是客户和系统交互的对象模型 采用ORM框架使得对象模型与数据库对象关系进行映射交互,也就是我们理解的POJO对象,此片文章采用mybatis的ORM框架
二、MyBatis概述
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
Mybatis分为三层:
- API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
- 数据处理层:负责具体的SQL查找、SQL解析、SQL执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
- 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件。为上层的数据处理层提供最基础的支撑。
三、项目构建过程及代码实现
环境需求:
1、Eclipse
1、Java JDK、JRE1.7
2、Tomcat7.0
1、Maven项目创建
maven 构建web项目index.jsp报错问题解决
解决办法:
JSP页面顶端出现“红色”的报错信息:The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path。原来Javaweb工程类中没有添加Tomcat运行时相关类导致。
下面是具体的解决方法:
1、右击web工程—>属性或Build Path—>Java Build Path—>Libraries—> Add Libray…—>Server Runtime —>Tomcat Server—>Finish
2、切换到Java Build Path界面中的Orader and Export,选择Tomcat,报错就没有了。
注意:按以上方法操作时,若打开Server Runtime后一片空白,需要设置Apache服务器。设置方法为:window->Preferences->Server->Runtime Environment -> add --> 选择Apache的版本后点Next,再填入你apache服务器软件的安装(解压后)地址。
2、代码配置文件
1、pom.xml文件,引入必须架包
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.creed.asset</groupId>
<artifactId>asset_wq_ssm</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>asset_wq_ssm Maven Webapp</name>
<url>http://maven.apache.org</url><properties><!-- spring版本号 --><spring.version>4.0.2.RELEASE</spring.version><!-- mybatis版本号 --><mybatis.version>3.2.6</mybatis.version><!-- log4j日志文件管理包版本 --><slf4j.version>1.7.7</slf4j.version><log4j.version>1.2.17</log4j.version>
</properties><dependencies>
<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency><!-- hibernate验证器 -->
<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.4.1.Final</version>
</dependency><!-- Gson -->
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.2</version>
</dependency><!-- spring核心包 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</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-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-webmvc</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-test</artifactId><version>${spring.version}</version></dependency><!-- pageHelper --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.2.1</version></dependency><!-- mybatis核心包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><!-- mybatis/spring包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.2</version></dependency><!-- 导入java ee jar 包 --><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><version>7.0</version></dependency><!-- 导入Mysql数据库链接jar包 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.30</version></dependency><!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.2.2</version></dependency><!-- JSTL标签类 --><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- 日志文件管理包 --><!-- log start --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- 格式化对象,方便输出日志 --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.27</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><!-- log end --><!-- 映入JSON --><dependency><groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.9.13</version></dependency><!-- 上传组件包 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.9</version></dependency>
</dependencies>
<build><finalName>asset_wq_ssm</finalName>
</build>
</project>
2、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"><display-name>Archetype Created Web Application</display-name>
<!-- Spring和mybatis的配置文件 -->
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mybatis.xml</param-value>
</context-param> <!-- 编码过滤器 -->
<filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><async-supported>true</async-supported><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param> <param-name>forceEncoding</param-name><param-value>true</param-value> </init-param>
</filter>
<filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping><!-- Spring监听器 -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener><!-- 防止Spring内存溢出监听器 -->
<listener><listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener> <!-- Spring MVC servlet --><servlet><servlet-name>SpringMVC</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><async-supported>true</async-supported>
</servlet>
<servlet-mapping><servlet-name>SpringMVC</servlet-name><!-- 此处配置请求的格式 --><url-pattern>/asset/*</url-pattern>
</servlet-mapping> <welcome-file-list><welcome-file>/index.jsp</welcome-file>
</welcome-file-list><!-- 配置SESSION超时,单位是分钟 -->
<session-config><session-timeout>60</session-timeout>
</session-config>
</web-app>
3、index.jsp
<%@ page language="java" contentType="text/html; charset=Utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Utf-8"><title>查询用户</title>
</head>
<body>
<script language="JavaScript">window.location.href = "<%=request.getContextPath()%>/asset/user/selectAllUser";
</script>
</body>
</html>
3、重要的整合文件
具体代码文件我就不贴出来了(偷下懒,嘻嘻),这里给下我的资源链接,大家可以自行下载,参考;
http://download.csdn.net/download/hsxy123123/9929239
4、利用MyBatis Generator自动创建代码
这个可根据表自动创建实体类、MyBatis映射文件以及DAO接口,当然,我习惯将生成的接口名改为IUserDao,而不是直接用它生成的UserMapper。如果不想麻烦就可以不改。完成后将文件复制到工程中。
可以参考我的SSM框架——使用MyBatis Generator自动创建代码
5、userController.java,不能生成,那我就贴出来呗。
package com.ssm.asset.user.controller;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.ssm.asset.user.domain.User;
import com.ssm.asset.user.service.UserService;
@Controller
@RequestMapping("/user")
public class UserController{
@Resource
private UserService userService;@RequestMapping(value = "/selectAllUser")
@ResponseBody
public List<User> selectAllUserList(){List<User> userList = this.userService.selectAllUserList();return userList;
}
}
6、UserService.java文件,那我也贴出来
package com.ssm.asset.user.service;
import java.util.List;
import com.ssm.asset.user.domain.User;
public interface UserService {public List<User> selectAllUserList();
}
7、UserServiceImpl .java我也贴出来
package com.ssm.asset.user.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.ssm.asset.user.dao.UserMapper;
import com.ssm.asset.user.domain.User;
import com.ssm.asset.user.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService {@Resource
private UserMapper userDao;public List<User> selectAllUserList(){List<User> userList = this.userDao.selectAllUser();return userList;
}
}
8、测试
至此已经完成了SSM三大框架的整合了,接下来测试一下,如果成功了,那么恭喜你,如果失败了,继续调试吧,作为程序员就是不停的与BUG做斗争!
偷了许多懒,还请小伙伴见谅!!!,喜欢就点赞,爱我就打赏,嘻嘻
SSM框架——干净详细的整合学习教程(Spring+SpringMVC+MyBatis)相关推荐
- SSM框架+Plupload实现分块上传(Spring+SpringMVC+MyBatis+Plupload)
关于Plupload的介绍,相信它的官网http://www.plupload.com/已经给得很详细了.Plupload的上传原理简单点说,就是将用户选中的文件(可多个)分隔成一个个小块,依次向服务 ...
- 基于ssm的校园二手物品交易平台(idea+spring+springmvc+mybatis+jsp)
一.系统简介 本项目采用idea工具开发,jsp+spring+spring-mvc+mybatis+jquery技术编写,数据库采用的是mysql,navicat开发工具. 系统一共分为2个角色分别 ...
- java实现登陆ssm框架_SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)
初学java EE,虽然知道使用框架会使开发更加便捷高效,但是对于初学者来说,感到使用框架比较迷惑,尤其是各种jar包的引用.各种框架的配置.注解的使用等等. 最好的学习方法就是实践,于是下载了一个现 ...
- SSM学习——SSM整合案例(Spring+SpringMVC+Mybatis)(13)
这里写目录标题 要求 Spirng整合Mybatis Spirng整合SpringMVC 表与实体类的创建 创建层级 Dao层 Service层 controller层 接口测试 业务层`servic ...
- 基于SSM的公益捐赠管理系统设计与实现 Spring+SpringMVC+MyBatis
全套程序源码+数据库文本 文档都在,可以和帖主交流 项目地址:http://www.lw225.cn/lwlist.php?pclass=JSP 第一章 概述 1.1 研究背景 随着市场经济的发展,市 ...
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没有新通知 想要绕过微信小程序开发中的坑吗?不妨来听这个,今晚8点,1小时帮你搞定! 14小时以前 CSDN日报 ...
- SSM框架整合—详细整合教程(Spring+SpringMVC+MyBatis)
SSM框架整合-详细整合教程(Spring+SpringMVC+MyBatis) ✨博主介绍 MyBatis和Spring整合 1.整合原因 2.整合条件 3.整合入门 4.整合MyBatis现有配置 ...
- SSM框架详细整合教程(Spring+SpringMVC+MyBatis)
动机 使用maven已经有一段时间了,但项目是别人搭建好的,因此一直想着自己要学习搭建一下.网上找了些资料后,结合自己实验,花了点时间就搞好,老样子,写在博客上,免得日后忘记. 本文链接:http:/ ...
- 如何部署SSM框架(Spring+SpringMVC+MyBatis)到SAE(新浪云服务器)图文教程
在学习cocos2dx手游开发的过程中,为了实现用户注册.用户登陆和世界排行榜这些模块,需要用到服务器来搭建平台.以前都是 在本地搭建服务器,在本科期间使用过IIS和Tomcat,感觉在本地搭建服务器 ...
最新文章
- 读文献先读图——主成分分析 PCA 图
- Harbor Docker 镜像仓库搭建
- php修改新闻分类代码,新闻分类录入、显示系统_php
- 一些有用的ABAP程序和函数组
- js向head中添加js代码
- java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
- 单行溢出 和多行溢出
- 集合练习:登录注册功能
- std::call_once写单列模式
- js 根据掩码位计算可用ip地址_变长子网掩码:轻松分配IP地址(下)
- WPF管理系统自定义分页控件 - WPF特工队内部资料
- 网络盒子安装 linux,天猫魔盒安装原生linux的一些初步成果
- CRM——销售与客户
- textbox wpf 居中_WPF TextBox控件中文字实现垂直居中
- MPI大漩涡(单纯的floyd)
- 怎么做二维码?二维码制作的简单方法
- Docker错误合集
- arm920t中断系统详解
- P1419 寻找段落
- win10 卸载cuda