SSM 框架整合案例

根据  孙宇 的 视频讲解,跟着做了一个Demo

三大框架的整合难点主要是关于配置文件和jar包的问题

 该视频采用了Maven 进行导入jar包,eclipse maven 插件会出现许多的问题,需要一一改正

1.新建Maven 工程


2.改正Maven中的错误(加上该加的lib,版本调对,maven那个先不用管,以后修改pom的时候会自动出现)


3.继续修改错误,切换到navigator视图(把这些文件都打开看看,出现 1.5 的 都改成 1.8,出现 1.5.0 的改成 1.8.0,出现2.3 的改成 3.0)


4.继续修改错误。打开web.xml修改成如下



	springMVC

5.继续修改错误。打开pom.xml,加入以下代码


		SSMSemo_SY
		
		
			
				org.apache.maven.plugins
				maven-compiler-plugin
				2.1
				
					1.8
					1.8
				
			
		
	
6.至此,所有错误都已经修改完成了。先maven update 一波

7.maven update 完成之后,项目结构如图所示

8.可以开始在 pom文件里面配置 jar包了


	4.0.0
	ssm
	SSMSemo_SY
	war
	0.0.1-SNAPSHOT
	SSMSemo_SYMavenWebapp
	http://maven.apache.org


	
		
		
			org.springframework
			spring-core
			4.3.2.RELEASE
		
		
			org.springframework
			spring-webmvc
			4.3.2.RELEASE
		
		
			org.springframework
			spring-context
			4.3.2.RELEASE
		
		
			org.springframework
			spring-tx
			4.3.2.RELEASE
		
		
			org.springframework
			spring-jdbc
			4.3.2.RELEASE
		
		
			org.springframework
			spring-beans
			4.3.2.RELEASE
		
		
			org.springframework
			spring-aop
			4.3.2.RELEASE
		
		
			org.springframework
			spring-expression
			4.3.2.RELEASE
		
		
			org.springframework
			spring-test
			4.3.2.RELEASE
		
		
			org.springframework
			spring-webmvc
			4.3.2.RELEASE
		
		
			org.springframework
			spring-context-support
			4.3.2.RELEASE
		

		
		
			javax.servlet
			javax.servlet-api
			3.1.0
		

		
		
			org.mybatis
			mybatis
			3.2.8
		

		
		
			org.mybatis
			mybatis-spring
			1.3.0
		


		
		
			mysql
			mysql-connector-java
			5.1.30
		

		
		
			com.alibaba
			druid
			1.0.15
		

		
		
			aopalliance
			aopalliance
			1.0
		

		
			org.aspectj
			aspectjweaver
			1.8.6
		

		
		
			log4j
			log4j
			1.2.17
		

		
		
			com.alibaba
			fastjson
			1.2.7
		


		
		
			junit
			junit
			4.10
			test
		

	

	
		SSMSemo_SY
		
		
			
				org.apache.maven.plugins
				maven-compiler-plugin
				2.1
				
					1.8
					1.8
				
			
		
	


9.如果上面步骤完成后项目出现错误,找到错误的地方,根据一下方框的描述,把出错的,找不到jar包的 报错 的jar包,在本地仓库里删除,然后再maven update 一波

maven 就这尿性。。。



10.等待maven导入相关jar包后,开始写配置文件,三大框架的整合就是配置文件的问题。这里用两个配置文件配置。

一个是spring-mybatis.xml用来配置整合spring和mybatis 的,另一个是 spring-mvc.xml 用来配置三个框架的。


config.properties

driverClassName=com.mysql.jdbc.Driver
validationQuery=SELECT 1
#这里我使用的自己的数据库
jdbc_url=jdbc:mysql://localhost:3306/ssm_sy?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=root

log4j

log4j.rootLogger=DEBUG,Console,File

log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c]%m%n

log4j.appender.File=org.apache.log4j.RollingFileAppender 
log4j.appender.File.File=SSMDemo.log
log4j.appender.File.MaxFileSize=10MB
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n


spring-mybatis.xml






	
	
		
		
		

		
		
		
		
		
		
		
		
		
		

		
		
		
		

		
		
		
		

		
		
		
		
		
		

		
		
		
	

	
	
		
		
		
	

	
	
		
		
	


spring-mvcxml




	
	

	
	



spring-mvc.xml




	
   	
	
	
	

	  
      
          
        
      
  

sql(好多张表没用,主要的3张表  tuser   trole   tuser_trole)就行,项目中只使用了这3张表

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50529
Source Host           : localhost:3306
Source Database       : ssm_sy

Target Server Type    : MYSQL
Target Server Version : 50529
File Encoding         : 65001

Date: 2016-08-18 15:17:39
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for tbug
-- ----------------------------
DROP TABLE IF EXISTS `tbug`;
CREATE TABLE `tbug` (
  `id` varchar(36) NOT NULL,
  `createdatetime` datetime DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `note` longtext,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tbug
-- ----------------------------

-- ----------------------------
-- Table structure for tmenu
-- ----------------------------
DROP TABLE IF EXISTS `tmenu`;
CREATE TABLE `tmenu` (
  `id` varchar(36) NOT NULL,
  `iconcls` varchar(100) DEFAULT NULL,
  `seq` decimal(22,0) DEFAULT NULL,
  `text` varchar(100) DEFAULT NULL,
  `url` varchar(200) DEFAULT NULL,
  `pid` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tmenu
-- ----------------------------

-- ----------------------------
-- Table structure for tonline
-- ----------------------------
DROP TABLE IF EXISTS `tonline`;
CREATE TABLE `tonline` (
  `id` varchar(36) NOT NULL,
  `ip` varchar(50) DEFAULT NULL,
  `logindatetime` datetime DEFAULT NULL,
  `loginname` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tonline
-- ----------------------------

-- ----------------------------
-- Table structure for tresource
-- ----------------------------
DROP TABLE IF EXISTS `tresource`;
CREATE TABLE `tresource` (
  `id` varchar(36) NOT NULL,
  `seq` decimal(22,0) DEFAULT NULL,
  `text` varchar(100) DEFAULT NULL,
  `url` varchar(200) DEFAULT NULL,
  `pid` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tresource
-- ----------------------------

-- ----------------------------
-- Table structure for trole
-- ----------------------------
DROP TABLE IF EXISTS `trole`;
CREATE TABLE `trole` (
  `id` varchar(36) NOT NULL,
  `text` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of trole
-- ----------------------------

-- ----------------------------
-- Table structure for trole_tresource
-- ----------------------------
DROP TABLE IF EXISTS `trole_tresource`;
CREATE TABLE `trole_tresource` (
  `id` varchar(36) NOT NULL,
  `resource_id` varchar(36) DEFAULT NULL,
  `role_id` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of trole_tresource
-- ----------------------------

-- ----------------------------
-- Table structure for tuser
-- ----------------------------
DROP TABLE IF EXISTS `tuser`;
CREATE TABLE `tuser` (
  `id` varchar(36) NOT NULL,
  `createdatetime` datetime DEFAULT NULL,
  `modifydatetime` datetime DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL,
  `pwd` varchar(50) DEFAULT NULL,
  `create_time` date DEFAULT NULL,
  `update_time` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tuser
-- ----------------------------
INSERT INTO `tuser` VALUES ('1', null, null, 'HR', '11', null, null);

-- ----------------------------
-- Table structure for tuser_trole
-- ----------------------------
DROP TABLE IF EXISTS `tuser_trole`;
CREATE TABLE `tuser_trole` (
  `id` varchar(36) NOT NULL,
  `role_id` varchar(36) DEFAULT NULL,
  `user_id` varchar(36) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of tuser_trole
-- ----------------------------

以上的静态文件都放在目录下(至此,三大框架终于整合完了,如果没有报错,简直接下来没啥困难了)


11.可以开始写代码了,使用逆天工具自动生成  实体类、Mybatis映射文件mapper.xml 以及 dao层的接口。使用方法见下面的链接


12.生成完了之后,直接复制到一下图片位置,并添加其它两个包controller 和 service



13.先创建UserController.java类(一个springMVC很简单的应用)

package ssm.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import ssm.model.User;
import ssm.service.UserService;

/**
 * SSM(Spring+SpringMVC+MyBatis 三大框架整合)
 *
 */
@Controller
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	private UserService userService;

	/**
	 * http://localhost:8080/SSMSemo_SY/user/showUser/1
	 * @return
	 */
	@RequestMapping("/showUser/{id}")
	public String showUser(@PathVariable("id") String id,HttpServletRequest request) {
		User u = userService.getUserById(id);
		request.setAttribute("user", u);
		return "showUser";
	}
}

14.创建UserService接口 和 UserServiceImpl 实现类

package ssm.service;

import java.util.List;

import ssm.model.User;

public interface UserService {

	public User getUserById(String id);
}

package ssm.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import ssm.dao.UserMapper;
import ssm.model.User;

@Service("userService")
public class UserServiceImpl implements UserService {

	@Autowired
	private UserMapper userMapper;
	
	@Override
	public User getUserById(String id) {
		return userMapper.selectByPrimaryKey(id);
	}
}

上面使用了spring 的注解,实现自动注入,具体不多讲了。然后UserMapper 其实就是用逆天工具生成的Dao层,是一个接口,没有实现类,用mybatis 的 特性,自动实现查询,但是要符合4个规范,去学mybatis 就懂了

Mybatis 自动生成dao 文件的4 个要求

1. 返回类型相同
2. 传入参数相同
3. sql 的 id 和 方法名 相同
4. namespace 要和 Mapper 接口的名(完整名,带包名) 相同

例如:

ssm.dao.UserMapper:
User selectByPrimaryKey(String id);



15.编写showUser页面,注意位置


showUser.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>




Insert title here

${user.name}


16。大功告成,先maven update 一波,再maven install 一波,在 run on server


17.打开浏览器:输入

http://localhost:8080/SSMSemo_SY/user/showUser/1

如果出现


大功告成,HR 是 数据库存的名字


如果没有成功,一定是maven 的问题,没错,这东西毛病太多了。但是没办法,总要学,总要改,总要找bug,加油!

你可能感兴趣的:(SSM 框架整合案例)