SSM

197 阅读9分钟

SSM框架原理

SSM框架是spring mvc加spring加mybatis框架的整合。

spring MVC负责请求转发与视图管理,spring负责业务对象管理,mybatis作为数据对象的持久化引擎

springMVC

首先spring mvc框架是处理所有HTTP请求和响应的。

其中M模型封装了应用程序的数据,

view视图负责呈现的Model数据和一般它生成的HTML的输出

C是controller控制器,负责处理用户的请求解析这些请求,并且为这些请求建立适当的模型。然后把模型数据返回给前端,就是响应给前端,也就是传递给视图进行渲染。

DAO层

‌一般的在项目中分为四个层次,dao层(mapper)是主要是做数据持久层的工作,就是与数据库进行交互的一些任务都封装在dao层,就是比如说对数据库表的增删改查都在dao,也就是mapper里面。

1.DAO层的设计首先是设计DAO的接口。mapper

2.然后再spring的配置文件中定义接口的实现类。xml

3.然后就可以在具体的模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构比较清晰。

4.DAO层的数据源配置以及有关数据库连接的参数都在spring的配置文件中进行配置。(applicationContext.xml)

Service层

‌service也就是服务层主要是负责业务模块的逻辑设计。什么是业务模块呢?简单来说就是功能模块,比如说用户的注册登录。管理员对影视信息的新增,修改,删除这些都都叫做业务模块。

1.首先设计接口,再设计其实现的类。

2.在spring的配置文件中配置其实现的关联,就可以在应用中调用service的接口来进行业务处理。

3.service层的业务实现,具体要调用到已定义的DAO层的接口。

4.封装service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。

controller层

‌contorller控制器是负责具体的业务模块的流程控制,流程控制主要是简单来说就是先做什么再做什么,最后做什么,就是对这个流程进行控制。

controller 是dao层和view层的中间键。

举个例子,比如说用户登录这个业务模块,我们在前端登录的时候点击登录按钮,也就是发送一次HTTP的请求,请求在后端,在后端被ctrloller拦截,然后contorller对这个请求进行解析啊,解析这个请求应该分给哪个service,我们这里既然是登陆的模块,那就是分给登陆的service。然后这个service掉一些mapper,就是到dao层对这个数据库进行一些对数据库里的这个用户表进行查询。把刚刚我们前端提交的数据就是用户名和密码跟数据库用户表里的数据进行 对比也就是查询如果查的出来的话,那就说明存在这个用户,用户名和密码是正确的,就是登陆成功,如果查不到查不到这个数据的话,就说明用户名密码输入错误或者是根本就没有注册。dao层返回一个结果返回给controller,把这个结果无论是查得到还是查不到,把这个结果再返回给前端,比如说我们是查的到的话,也就是登录成功,登录成功的话ctrl这里。就是登陆成功了就登录页跳转到商城的首页。如果是登陆失败呢,我们认为我们这里这个项目认为是这个用户没有注册,那就从登陆页跳转到注册页。

1.此层里面要调用service层的接口来控制业务流程。

2.控制的配置也同样在spring的配置文件中进行,针对具体的业务流程不同,就会有不同的控制器。

view层

‌接下来就是view层,接着上面说我们从数据库里获取的结果交给controller,controller通知这个view从登录页面跳转到首页,首页是view层渲染出来的。

view与controller联系比较紧密,需要两者结合起来协同开发。view层主要负责前台jsp页面的渲染。 ‌

‌各层联系

1.DAO层和Service层都可以单独开发,互相耦合性很低,可以独立进行。

2.Controller层和view层耦合性比较高,要结合在一起进行开发,可以看作是一个整体,与DAO和service层独立进行开发。这样在层与层之间我们只知道接口的定义,调用接口即可完成所需要的逻辑单元应用。

3.service层是建立在DAO层之上的,建立了DAO层之后才可以建立service层,而service层又是在controller层之下的,所以service层既要调用DAO层的接口,又要提供接口给controller层的类进行调用,正好处于中间层的位置。 每个模型都有一个service接口,每个接口分别封装在各自的业务处理方法中。

‌Spring

‌第二个s是spring,是一个容器的框架,web层,dao层,业务层,持久层都装在这个容器里面spring这个框架,对各个组件也就是各种bean之间的关系都由spring框架来控制。当我们需要使用某个bean时,可以直接getBean(id)进行使用。

spring目的时让模块与模块之间的关系没有通过代码来管理,都是通过配置说明管理的(spring根据这些配置内部通过反射去动态的组装对象),spring是一个容器,凡是在容器里的对象才会有spring所提供的这些服务和功能。

Mybatis

‌mybatis是对jdbc的封装,数据库底层的操作都是由mybatis支持的,让数据库的底层操作变透明。mybatis通过配置文件关联到各实体类的mapper文件,mapper文件中配置了每个类对数据库所需进行的SQL语句映射。

mybatis的操作都是围绕这一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的mapper文件。mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,在执行sql命令。

2.项目结构

src后端代码,webroot前端代码,pom.xml是配置文件,说明书,项目依赖的jar包,在远程服务器上自动下载。

src com业务代码,

controller控制器,连接页面的请求和后端的服务器,映射不同的url到处理函数,前台的url,根据url判断到相对应的控制器,对应控制器下的哪个方法。方法可能会返回jsp页面到view层,view层进行渲染;获取调用service层的方法,service再调用对应的dao,对数据库表进行查询.DAO层文件成对出现,接口和实现类的关系,Mapper文件为接口,xml文件为接口的具体实现类。

mapper文件夹 blog.csdn.net/Hicodden/ar…

登录注册:

@controller 注解 扫描才能知道他是一个控制器。配置在springmvc.xml

前端发送请求给后端,后端进行请求的拦截,拦截之后解析前端的url,解析之后springmvc得到需要把请求交给哪个控制器去处理。

controller先是指定接口实现类需要使用到的service服务

@RequestMapping对应前端url的第二个路径,会返回路径,为jsp界面。

jsp

form表单,action 提交到控制器,进行登录验证,将登录的用户信息保存到session中,需要使用时从瑟斯on中取,如果session为空,则表示用户没有登录,不允许进行操作。传进去实体对象,在数据库中查询,返回数据库该条数据到这个实体对象,

mapper

指明mapper的位置 mapper包下的哪个文件,与哪个mapper对应,该文件中的sql语句是对mapper文件中接口的具体实现

将实体类与数据库字段进行映射

property 实体类的属性,

column 数据库字段,

jdbcType java数据库连接的类型,将数据库字段的类型映射为对应java可以认识的类型。

id指明该代码是对mapper文件中某个接口的实现,是mapper中的接口方法名;parameterType参数类型(可能为实体类对象) 可以在sql标签中声明数据库字段,将字段进行封装,当需要查询的参数为所有字段时,直接复用id 可以在sql标签封装查询条件 放在where后 流程: 前端输入提交,根据url路径可以定位到在哪个controller中,下一层路径对应controller中的那个方法,方法中之间返回jsp页面的路径(view渲染)或者调用service接口中的方法,在impl文件中有方法的具体实现,service接口具体实现类会调用mapper中的某个接口,在mapper中的xml文件中时是对mapper中接口具体方法的SQL语句,mapper查询出对象实体返回给service层,service层再返回给controller,再由controller进行下一步的流程控制,jsp页面的渲染。 退出登登录就是把保存在session中的用户信息清空,并将页面返回到登录页面。 注册操作,看数据库中是否有新增数据,看后台执行了哪些方法。 将实体类数据赋值给数据库字段。 保存session,个人信息等都是从session获取的 jsp <c:foreach> 循环遍历展示信息 修改密码,通过session中的id查询用户相关的所有信息, 将查询出来的load赋值给一个obj名称,就是把数据取名,会在jsp页面中出现。 前端从后台获取obj 方法参数有String类型的属性和http请求 public String login(String userName,String userPass,HttpServletRequest request){