1. 相关技术简介
Spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
SpringMVC
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。
MyBatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
2. 使用idea创建maven项目
打开idea创建一个新项目
选择如图,next
需要填入GroupID和ArtifactID
GroupID和ArtifactID百度上也说的很好理解,这里我说下自己的理解,这两个id可以确定你资源的位置。GroupID一般分为多段,如cn.zst,和eclipse中的包类似,ArtifactID一般代表项目名。如ssmtest,如果你项目里有一个资源Dome.java在包test下,那么这个资源的全路径就是cn.zst.ssmtest.test.Dome.java
配置maven,选择已经安装好的maven目录
项目名和创建项目所在的路径(根据个人喜好更改):
点击完成就创建好了maven项目。
3. 创建工程(以查询所有用户信息为例)基本目录(看自己习惯了,下面是我的,仅供参考)
- 项目目录:
- 代码详情
USer.java
package com.model;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
public class User {
private Integer id;
private String username;
private String password;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birth;
private String gender;
private String email;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password="
+ password + ", birth=" + birth + ", gender=" + gender
+ ", email=" + email + "]";
}
}
USerDao
package com.dao;
import com.model.User;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserDao {
List selectAll();
}
UserMapper.xml
id, username, password, birth,gender,email
UserService
package com.service;
import com.model.User;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public interface UserService {
List selectAll();
}
UserServiceImpl注意要有注解@Service
package com.service.impl;
import com.dao.UserDao;
import com.model.User;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public List selectAll() {
return userDao.selectAll();
}
}
MainController 注意要有注解@Controller
package com.controller;
import com.model.User;
import com.service.UserService;
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.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
*@author zst
*/
@Controller
public class MainController {
@Autowired
private UserService userService;
/**
*
* @return users
*/
@ResponseBody
@RequestMapping(value = "/selectAll", method = RequestMethod.GET)
public List selectAll(){
List users = userService.selectAll();
System.out.println(users.toString());
return users;
}
}
4. 整合ssm
-
在pom.xml文件中引入所需要的jar包.
pom.xml 文件核心依赖,有注释
junit
junit
4.11
test
log4j
log4j
1.2.17
org.springframework
spring-context
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-beans
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-test
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
1.3.0
javax
javaee-api
7.0
mysql
mysql-connector-java
5.1.30
commons-dbcp
commons-dbcp
1.2.2
jstl
jstl
1.2
com.alibaba
fastjson
1.1.41
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
org.codehaus.jackson
jackson-mapper-asl
1.9.13
commons-fileupload
commons-fileupload
1.3.1
commons-io
commons-io
2.4
commons-codec
commons-codec
1.9
提示:要是使用${slf4j.version}这一种形式,前边
UTF-8
4.0.2.RELEASE
3.4.0
1.7.6
-
Spring与MyBatis的整合
创建jdbc.properties和spring-mybatis.xml文件 (详情看注释)
jdbc.properties
#驱动
jdbc.driverClassName = com.mysql.jdbc.Driver
#地址
jdbc.url=jdbc:mysql://127.0.0.1:3306/ssmdome?useSSL=false&useUnicode=true&characterEncoding=utf-8
#用户名
jdbc.username = root
#密码
jdbc.password = root
spring-mybatis.xml 主要配置数据源,扫描。
${jdbc.driverClassName}
${jdbc.url}
${jdbc.username}
${jdbc.password}
-
spring-mvc的整合
创建spring-mvc.xml配置文件. 主要配置自动扫描控制器,视图模式,注解的启动
text/html;charset=UTF-8
-
配置web.xml文件
在web.xml中配置spring-mvc和spring-mybatis文件。
Archetype Created Web Application
contextConfigLocation
classpath:spring-mybatis.xml
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
true
encoding
UTF-8
encodingFilter
/*
org.springframework.web.context.ContextLoaderListener
org.springframework.web.util.IntrospectorCleanupListener
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
SpringMVC
/
/index.jsp
此时启动tomcat,没问题,测试一下。数据正常返回。
注意
在搭建ssm项目的时候会遇到很多坑,这里我总结一下自己遇到的坑。
- service中的注解不能少
- spring-mvc,spring-mybatis中包的扫描不能忘。
- web.xml中引入 spring-mvc,spring-mybatis,还有一些监听器和过滤不能少。
- 出现bug 要多百度,认真查找原因。
小结:生命不息,学习不止。