关于SSM框架下各层的解释说明(Controller等)

目录
  • SSM框架
  • 各层解释说明
    • entity层(model层)
    • dao层(mapper层)
    • service层
    • Controller层(web层)

SSM框架

SSM框架是spring MVC ,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层(web),controller层,service层,dao层四层,使用spring MVC负责请求的转发和视图管理。

Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。

  • 表现层(web):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
  • 业务逻辑层(service):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
  • 数据访问层(dao):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

DataBase ===> Entity ===> Mapper.xml ===> Dao.Java ===> Service.java ===> Controller.java ===> html css js(thymeleaf)

各层解释说明

用IDEA创建一个maven项目结构如左图所示,在该项目中,有五个包,分别是controller、dao、entity、service和serviceimpl:

描述
实体层 数据库在项目中的类,主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。
持久层 与数据库交互,dao层首先会创建dao接口,接着就可以在配置文件中定义该接口的实现类;接着就可以在模块中调用dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,dao层的数据源和数据库连接的参数都是在配置文件中进行配置的。
业务层 控制业务,业务模块的逻辑应用设计,和dao层一样都是先设计接口,再创建要实现的类,然后在配置文件中进行配置其实现的关联。接下来就可以在service层调用接口进行业务逻辑应用的处理。
实现层 实现service接口的所有方法,整合service和dao
控制层 controller层主要调用Service层里面的接口控制具体的业务流程,控制的配置也要在配置文件中进行。Controller和Service的区别是:Controller负责具体的业务模块流程的控制;Service层负责业务模块的逻辑应用设计

entity层(model层)

实体层用于存放我们的实体类,与数据库中的属性值基本保持一致,实现set和get的方法。

1.导入lombok小辣椒驱动依赖,用来生成get/set方法依赖:

package com.dvms.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.util.Date;
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true) //链式调用
public class Emp {
    private String id;
    private String name;
    private Double salary;
    private Integer age;
    private Date bir;
}

2.传统方式

package com.umf.entity;
import java.io.Serializable;
public class UpdataSettingEntity implements Serializable {
	private static final long serialVersionUID = 1L;
	//
	private Integer id = 1;
	//
	private int updataflag;
	/**
	 * 设置:
	 */
	public void setId(Integer id) {
		this.id = id;
	}
	/**
	 * 获取:
	 */
	public Integer getId() {
		return id;
	}
	/**
	 * 设置:
	 */
	public void setUpdataflag(int updataflag) {
		this.updataflag = updataflag;
	}
	/**
	 * 获取:
	 */
	public int getUpdataflag() {
		return updataflag;
	}
}

dao层(mapper层)

dao层(接口类)对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的,主要实现一些增删改查操作,在Mybatis中方法主要与与xxxDao(Mapper).xml内相互一一映射。

Mybatis可以用.xml进行数据操作,也可以在dao层用注解的方式,也可以采取xml和dao层接口组合使用的方法(常用)。

package com.dvms.dao;
import com.dvms.entity.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserDao {
    //登录
    User login(@Param("username") String username, @Param("password") String password);// 在mybatis中传递多个参数要做参数的绑定
    //新增用户(注册)
    void save(User user);
    //查询所有用户
    List<User> findAlluser();
    //删除用户
    void delete(String id);
    //修改用户信息(先查再改)
    User update(String id);
    void add(User user);
}

xxxDao(Mapper).xml:

关键: < mapper namespace=“com.dvms.dao.UserDao”>

前提:基本数据库语法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dvms.dao.UserDao">
<!--注册/新增用户-->
    <insert id="save" parameterType="User">
        insert into user (id,username,password,sex,phone,email,role) values (#{id},#{username},#{password},#{sex},#{phone},#{email},#{role})
    </insert>
<!--登录验证-->
    <select id="login" resultType="User">
        select id,username,password,sex,phone,email,role from user
        where username =#{username} and password =#{password}
    </select>
<!--查询所有用户-->
    <select id="findAlluser" resultType="User">
        select id,username,password,sex,phone,email,role from user
    </select>
<!--删除用户-->
    <delete id="delete" parameterType="String">
        delete from user where id=#{id}
    </delete>
<!--修改用户信息-->
    <!--查到要修改的用户信息-->
    <select id="update" parameterType="String" resultType="User">
        select id,username,password,sex,phone,email,role from user where id=#{id}
    </select>
    <!--修改用户信息-->
    <update id="add" parameterType="User">
        update user set username=#{username},password=#{password},sex=#{sex},phone=#{phone},email=#{email},role=#{role} where id=#{id}
    </update>
</mapper>

在dao层用注解的方式:

public interface StudentDao {

    @Select("select * from student where stu_id=#{stuId}")
    public Student queryById(int stuId);
}

service层

service层(接口类)为controller层的类提供接口进行调用,一般就是自己写的方法封装起来,具体实现在serviceImpl中。

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

package com.dvms.service;
import com.dvms.entity.User;
import java.util.List;
public interface UserService {
    //新增用户
    void save(User user);
    //登录
    User login(String username, String password);
    //查询所有用户
    List<User> findAlluser();
    //删除用户
    void delete(String id);
    //修改用户信息
    User update(String id);
    void add(User user);
}

servicedmpl(实现service层,整合service和dao)(导入dao层)(接口实现类)

package com.dvms.service.Impl;
import com.dvms.dao.UserDao;
import com.dvms.entity.User;
import com.dvms.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.UUID;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public void save(User user) {
        user.setId(UUID.randomUUID().toString());
        userDao.save(user);
    }
    @Override
    public User login(String username, String password) {
        return userDao.login(username,password);
    }
    @Override
    public List<User> findAlluser() {
        return userDao.findAlluser();
    }
    @Override
    public void delete(String id) {
        userDao.delete(id);
    }
    @Override
    public User update(String id) {
        return userDao.update(id);
    }
    @Override
    public void add(User user) {
        userDao.add(user);
    }
}

Controller层(web 层)

负责具体模块的业务流程控制(获取参数(前端传过来)返回响应(前端或数据库或一个指定路径)),需要调用service逻辑设计层的接口来控制业务流程(导入service层)。

package com.dvms.controller;
import com.dvms.entity.Emp;
.....
@Controller
public class EmpController {
    @Autowired
    private EmpService empService;
    @GetMapping("emp/findAll")
    public String findAll(@RequestParam(defaultValue = "1") int pageNum,
                          @RequestParam(defaultValue = "5") int pageSize,
                          Model model){
        PageHelper.startPage(pageNum,pageSize);//
        PageInfo<Emp> pageInfo = new PageInfo<>(empService.findAll());
        model.addAttribute("pageInfo",pageInfo);
//        List<Emp> emps = empService.findAll();
//        model.addAttribute("emps",emps);
        return "ems/tables";
    }
    @RequestMapping("/emp/save")
    public String save(Emp emp){
        empService.save(emp);
        return "redirect:/emp/findAll";
    }
}

Controller层调用了Service层的接口方法,Service层调用Dao层的方法,其中调用的参数是使用Entity层进行传递的。View层与Controller层协同工作,主要负责界面展示。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • ssm框架controller层返回json格式数据到页面的实现

    通常前端页面发送ajax请求,我们只需要返回json格式数据就行 1.在pom.xml加入依赖 <properties> <jackson.version>2.5.4</jackson.version> </properties> <dependencies> <!-- controller返回json --> <dependency> <groupId>com.fasterxml.jackson.core&l

  • SpringMVC 整合SSM框架详解

    整合SSM 环境要求 环境: IDEA MySQL5.7.19 Tomcat9 Maven3.6 要求: 需要熟练掌握MySQL数据库,Spring,JavaWeb及MyBatis知识,简单的前端知识: 数据库环境 创建一个存放书籍数据的数据库表 CREATE DATABASE `ssmbuild`; USE `ssmbuild`; DROP TABLE IF EXISTS `books`; CREATE TABLE `books` ( `bookID` INT(10) NOT NULL AUT

  • 关于SSM框架下各层的解释说明(Controller等)

    目录 SSM框架 各层解释说明 entity层(model层) dao层(mapper层) service层 Controller层(web层) SSM框架 SSM框架是spring MVC ,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层(web),controller层,service层,dao层四层,使用spring MVC负责请求的转发和视图管理. Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎. 表现层(web):通俗讲就是展现

  • SSM框架下实现登录注册的示例代码

    基本配置:jdk1.8   tomcat 8  MyEclipse 先打好地基: spring配置文件 application.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-

  • SSM框架下如何实现数据从后台传输到前台

    目录 SSM数据从后台传输到前台 通过HttpServletRequest对象进行传递 通过ModeandView对象进行传递 通过在在方法中添加形参Model进行传递 SSM框架前后端数据传输逻辑整理 SSM框架实现思路 实现步骤 后话 SSM数据从后台传输到前台 在SSM框架下,数据从后台传输到前台主要有以下几种方法: 通过HttpServletRequest对象进行传递 通过ModeandView对象进行传递 通过在在方法中添加形参Model进行传递 接下来分批进行讲解: 通过HttpSe

  • ssm框架下web项目,web.xml配置文件的作用(详解)

    1. web.xml中配置了CharacterEncodingFilter,配置这个是拦截所有的资源并设置好编号格式. encoding设置成utf-8就相当于request.setCharacterEncoding("UTF-8"); foreEncoding设置成true就相当于response.setCharacterEncoding("UTF-8"); <filter> <filter-name>CharacterEncodingFi

  • 详解SSM框架下结合log4j、slf4j打印日志

    本文主要介绍了详解SSM框架下结合log4j.slf4j打印日志,分享给大家,具体如下: 首先加入log4j和slf4j的jar包 <!-- 日志处理 <!-- slf4j日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dep

  • 在SSM框架下用laypage和ajax实现分页和数据交互的方法

    layui,一款前端框架,提供了丰富的组件和模板,layui提供的简约后台管理模板,对于后端学习者来说是个不错的福音.这里记录在SSM框架下使用layui的分页组件laypage.(官网开发文档) 环境 Spring+SpringMVC+Mybatis , jquery-3.1.0.min.js , mysql-connector-java-5.1.34 参考文档 layui-laypage参数文档 前端代码主要参考的是layui官网给定的代码,加载layui.css和layui.js:除此之外

  • 基于ssm框架实现layui分页效果

    今天完成了基于ssm框架下,layui的分页操作,现在把核心内容分享一下: 1.前端页面的关键代码,基于html5 <!--自动渲染--> <table class="layui-table" lay-data="{cellMinWidth:100, height:'full-500', url:'meter/query', page:true, id:'idTest'}" lay-filter="demo"> <t

  • SSM框架整合JSP中集成easyui前端ui项目开发示例详解

    目录 前言 EasyUI下载与配置 页面美化 运行结果 总结与问题 前言 前端的UI框架很多,如bootsrap.layui.easyui等,这些框架提供了大量控件供开发人员使用,我们无需花费太大的精力,使得我们的页面具有专业标准,使用起来也很简单.所有的前端框架使用方式基本上大同小异,以下使用easyui作为UI框架做一演示,个人认为easyui提供的控件比较好看. EasyUI下载与配置 使用EasyUI,必须下载其js包,下载官网地址:https://www.jeasyui.cn/ 下载j

  • IDEA + Maven环境下的SSM框架整合及搭建过程

    目录 0.开发工具 一.Maven安装配置 二.Maven配置阿里云镜像源 三.Idea + Maven搭建项目骨架 说明:本文记录如何在Idea下,利用Maven管理项目,并整合SSM(Spring + Spring MVC +Mybatis)框架,实现简单的增删改查功能. 0.开发工具 IntelliJ IDEA 2018.2.2 x64 JDK 1.8.0_181 Apache Maven 3.6.0 Apache Tomcat 7.0 MySQL 5.5.8 一.Maven安装配置 1.

  • SSM框架JSP使用Layui实现layer弹出层效果

    最近做的系统里,使用layui当作前端的框架,就是用了layui自带的layer弹出层,效果图如下. 首先,导入layui需要的css,js文件,这个就不需要多说了.但是有关键的一步必须要做,也是许多新手会常犯的错误,就是没有预定义layui的form和layer,导致表单和弹出层不显示. 下面是layui的预定义. layui.use(['jquery', 'table', 'layer', 'form'], function() { // 加载layui模块,使用其推荐的[预先加载]方式,详

随机推荐