本人也是小白一枚,刚刚学习ssm框架,尝试着自己搭建一个属于自己的框架,这个框架虽然简单,却耗费了我饿一天的时间,下面是我搭建的过程,仅供参考。有什么不足之处大家可以指出。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。
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命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。(以上解释来自百度百科)
选择webapp的那一个创建项目。
然后点击finish,我们的maven项目创建完成。
我们刚刚创建的项目目录结构是这样的,这是不正确的目录结构需要我们自己调整。下面看一下调整步骤。
1.右键单击项目
2.选择Build Path然后选择Build Path后面扩展出来的那个选项,然后我们会看到下面的页面
然后按照上面的步骤操作,选择我们自己的jdk,然后点击finish之后apply一下就可以了,至于为什么会这样我也不清楚- -!
此时再看我们的目录结构
这就是正确的目录结构了,但这不是完整的目录结构,因为我们还要放我们自己的东西,下面是我的目录结构,但也不是最完整的,这是我目前用的到的
这是我搭建的一个自己的小框架的目录结构。
下面我们来说一下,每个文件的作用和配置方法
4.0.0
Mysecondmaven
Mysecondmaven
war
0.0.1-SNAPSHOT
Tur Maven Webapp
http://maven.apache.org
4.3.8.RELEASE
UTF-8
junit
junit
3.8.1
test
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}
com.alibaba
druid
1.0.20
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
5.1.26
org.mybatis
mybatis-spring
1.2.3
Mysecondmaven
这上面每一个包的作用都有注释,写的很清楚,每一对dependency之间就是一个jar包,最上面记得写上spring的版本,这个版本并不是固定的。
Archetype Created Web Application
contextConfigLocation
classpath:spring/spring-*.xml
org.springframework.web.context.ContextLoaderListener
Dispatcher
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/spring-mvc.xml
1
Dispatcher
/
index.jsp
这里配置了去哪里读取xml文件,这句的意思是去spring文件夹下读取所有spring-开头的.xml文件 。
这句的意思就是扫描com.Mysecondmaven.controllers文件夹下带@controller的文件,这些代码后面都有注释很好理解。
这是用来配置数据库的,上面都有注释,大家很好理解每一段是用来干嘛的。
jdbc.driver=com.mysql.jdbc.Driver
#阿里云服务器IP地址 47.95.203.218
jdbc.url=jdbc:mysql://localhost/newtest
jdbc.username=root
jdbc.password=123456
这个文件是用来连接数据库的
上面这些就是ssm框架的一些配置文件的操作,还是比较好理解的吧0.0
首先我们在数据库中新建一个表
取名为Person
我们在mybatis文件夹下的mapper文件夹下创建一个.xml文件
Myfirstbatis.xml
id, name, sex, age
这里的意思是type后面这个文件夹下的Person类
column对应的是数据库中的列名,property对应的是类中的属性,jdbctype是数据类型。
我们在这几个文件夹下创建java文件,这里我只是简单的测试了一下,并没有用到所有的功能。
package com.Myfirstmaven.controllers;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.Myfirstmaven.dao.PersonMapper;
import com.Myfirstmaven.entities.Person;
@Controller
public class Myfirstcontroller {
@Autowired
private PersonMapper personMapper;
@RequestMapping(value="/a")//设置访问controller的路径
public void test()
{
List personList = personMapper.selectByPrimaryKey(1234L);//通过主键去查询数据库
for(Person p : personList)
{
System.out.println(p.toString());//遍历输出查询到的结果
}
}
}
我建立了一个controller接受前台的请求,这里我没有用到service处理,我直接在controller中处理了请求。controller处理时调用了dao层的selectByPrimaryKey()方法。
package com.Myfirstmaven.dao;
import java.util.List;
import com.Myfirstmaven.entities.Person;
public interface PersonMapper {
List selectByPrimaryKey(Long id);
}
这个是dao层中的接口,只定义方法不实现。
package com.Myfirstmaven.entities;
public class Person {
private long id;
private String name;
private String sex;
private int age;
public Person()
{
}
public Person(long id, String name, String sex, int age) {
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
//重写toString方法,方便打印出属性的值
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + "]";
}
}
到这里,一个简单的ssm框架就介绍完毕了。
1.首先我们搭建一个框架最重要的就是这个框架的配置问题,也就是这些.xml文件,这些文件在编译时是合成一个总的xml文件的,其实写在哪里是一样的。
2.配置好之后然后就流程了,首先前端发送一个请求到后端,首先到达的就是controller层,由controller接收前端的请求。
3.然后service层处理请求,然后调用dao层中的接口查找数据库,然后dao层的实现在mapper文件夹下的xml文件夹中实现,最后controller返回给前端。