ssm框架指的是在web开发中使用spring,spring-mvc,MyBatis三种框架
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对象)映射成数据库中的记录。
开发环境搭建 :
可参考别人的博文: http://blog.csdn.net/zhshulin/article/details/30779873
Maven Web项目创建:
可参考别人的博文: http://blog.csdn.net/zhshulin/article/details/37921705
正式工作:
首先如图这样来创建一个maven项目,具体内容可以不写,但是路径和文件名称必须保持一致,路径和名称请不要嫌麻烦自己随意使用,等你真正掌握ssm框架后建议可以自己来改一下路径和名称.
给maven项目导入依赖:
为了方便后面说的时候不需要引入JAR包,我这里直接给出所有需要的JAR包,这都是基本的JAR包,每个包的是干什么的都有注释,就不再多说了。
pom.xml
4.3.8.RELEASE
UTF-8
junit
junit
3.8.1
test
junit
junit
3.8.1
test
javax.servlet
javax.servlet-api
3.0.1
provided
org.springframework
spring-core
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.aspectj
aspectjrt
1.8.0
org.aspectj
aspectjweaver
1.8.0
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
5.1.26
com.alibaba
druid
1.0.20
org.mybatis
mybatis-spring
1.2.3
javax.servlet
jstl
1.2
compile
com.google.code.gson
gson
2.8.5
log4j
log4j
1.2.17
org.slf4j
slf4j-api
1.7.21
org.apache.poi
poi
3.8
commons-codec
commons-codec
org.apache.poi
poi-ooxml
3.8
commons-fileupload
commons-fileupload
1.2.1
commons-io
commons-io
2.4
org.springframework
spring-context-support
5.0.0.RELEASE
com.sun.mail
javax.mail
1.6.1
Myssm
src/main/resources/spring/db.properties
src/main/resources
true
src/main/resources
true
src/test/resources
target/classes
target/test-classes
src/main/script
org.apache.maven.plugins
maven-compiler-plugin
1.8
UTF-8
建立spring-mybatis.xml配置文件
spring-mybatis.xml
建立spring-mvc.xml配置文件
spring-mvc.xml
${mail.smtp.auth}
${mail.smtp.timeout}
建立数据库测试用表:
既然我们需要测试,那么我们就需要建立在数据库中建立一个测试表,这个表建的很简单,SQL语句为:
DROP TABLE IF EXISTS `user_t`;
CREATE TABLE `user_t` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(40) NOT NULL,
`password` varchar(255) NOT NULL,
`age` int(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
/*Data for the table `user_t` */
insert into `user_t`(`id`,`user_name`,`password`,`age`) values (1,'测试','sfasgfaf',24);
建立后的表样式:
建立JDBC属性文件:
jdbc.properties(文件编码修改为utf-8)
(******mail.properties在这个项目中,我们并没有用到,可以删去******)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/zhoutian
jdbc.username=root
jdbc.password=123456
可以利用MyBatis Generator自动创建代码
参考博文:http://blog.csdn.net/zhshulin/article/details/23912615
这个可根据表自动创建实体类、MyBatis映射文件以及DAO接口,当然,我习惯将生成的接口名改为UserMapper,生成的类实体为User,生成的MyBatis映射文件为UserMapper.xml。完成后将文件复制到工程中。如图:
不过我在这里直接给出他们三个的代码,如果有修改路径名的同学务必注意xml映射文件中有许多地方需要修改,并且在上面的配置文件中也需要写出正确的文件路径,所以还是再次建议大家再搭好整个框架了解并熟悉后可以自己从头到尾自己搭一个.
User.java
package com.qcb.entitys;
public class User {
private Integer id;
private String userName;
private String password;
private Integer age;
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 == null ? null : userName.trim();
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserMapper.java
import com.qcb.entitys.User;
public interface UserMapper {
int deleteByPrimaryKey(Integer id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
}
UserMapper.xml
id, user_name, password, age
delete from user_t
where id = #{id,jdbcType=INTEGER}
insert into user_t (id, user_name, password,
age)
values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER})
insert into user_t
id,
user_name,
password,
age,
#{id,jdbcType=INTEGER},
#{userName,jdbcType=VARCHAR},
#{password,jdbcType=VARCHAR},
#{age,jdbcType=INTEGER},
update user_t
user_name = #{userName,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER},
where id = #{id,jdbcType=INTEGER}
update user_t
set user_name = #{userName,jdbcType=VARCHAR},
password = #{password,jdbcType=VARCHAR},
age = #{age,jdbcType=INTEGER}
where id = #{id,jdbcType=INTEGER}
建立Service接口和实现类
我们给出这两个文件的代码:
UserService.java
package com.qcb.services;
import com.qcb.entitys.User;
public interface IUserService {
public User getUserById(int userId);
}
UserServiceImpl.java
package com.qcb.serviceimpl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.qcb.dao.UserMapper;
import com.qcb.entitys.User;
import com.qcb.services.IUserService;
@Service("userService")
public class UserServiceImpl implements IUserService {
@Resource
private UserMapper userDao;
@Override
public User getUserById(int userId) {
System.out.println(111);
System.out.println(userId);
// TODO Auto-generated method stub
return this.userDao.selectByPrimaryKey(userId);
}
}
实现Controller对前后台数据交互的处理:
Mycontroller.java
package com.qcb.controllers;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.qcb.entitys.User;
import com.qcb.serviceimpl.UserServiceImpl;
import com.qcb.services.IUserService;
@Controller
public class Mycontroller {
@Resource
private IUserService userService;
@RequestMapping(value ="views/hello",method ={RequestMethod.GET})
public ModelAndView hello(String id){
System.out.println("0123");
int userId = Integer.parseInt(id);
User user = this.userService.getUserById(userId);
ModelAndView mv = new ModelAndView();
System.out.println("1234");
System.out.println(user.getUserName());
mv.addObject("message","ooooooooooooooo");
mv.setViewName("NewFile");
return mv;
}
}
一直到这里,我们所有关于后端框架已经搭建完毕,我们写一个小jsp页面来显示一下:
NewFile.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
Insert title here
(不过大家也可以稍微改动一下Mycontroller中的方法,就可简单让页面显示输出的"测试")
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
未完待续.....