栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

SSM框架之初体验

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SSM框架之初体验

  暑假跟着老师一起学习SSM框架,对于初学者来说,课堂上学的那点java知识,此时显得如此匮乏,也深感知识的不足,跟着网上的教程完成了一个简单的CRUD功能的信息管理项目,仅此为这几天的学习做个总结。

一、初步了解SSM

  SSM=Spring + Spring MVC + Mybatis ,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层,使用spring MVC负责请求的转发和视图管理,spring实现业务对象管理,mybatis作为数据对象的持久化引擎。

二、SSM原理

  关于SSM框架的原理,由于所学尚浅,这里引用csdn博主的见解并加以理解

SpringMVC:
1.客户端发送请求到DispacherServlet(分发器)
2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller
3.Controller调用业务逻辑处理后,返回ModelAndView
4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图


5.视图负责将结果显示到客户端

Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们Java中的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。

Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令

以上是该博主对SSM框架的分享,在此之后,我进一步查阅资料了解了该框架下各层级的解释

持久层:DAO层(mapper)
  • DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,

    • DAO层的设计首先是设计DAO的接口,

    • 然后在Spring的配置文件中定义此接口的实现类,

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

    • DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。

业务层:Service层
  • Service层:Service层主要负责业务模块的逻辑应用设计。

    • 首先设计接口,再设计其实现的类

    • 接着再在Spring的配置文件中配置其实现的关联。这样我们就可以在应用中调用Service接口来进行业务处理。

    • Service层的业务实现,具体要调用到已定义的DAO层的接口,

    • Service层的实现类中用Spring的IOC(@Autowired注解)自动注入了一个或多个mapper对象,即该对象是调用sqlSessionFactory的getSession的getBean方法获得的。然后再调用mapper对象的相应方法

表现层:Controller层(Handler层)
  • Controller层:Controller层负责具体的业务模块流程的控制

    • 在此层里面要调用Service层的接口来控制业务流程,

    • 控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。

  • 至于View层 此层与控制层结合比较紧密,需要二者结合起来协同工发。View层主要负责前台jsp页面的表示.

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

整体来说就是,用户request请求到SpringMVC的前端控制器,从处理器映射器找相应的handler(用@RequestMapping("  ")标注,映射成功后,由SpringMVC生成一个handler对象,该对象中有一个方法,即映射成功的该方法),handler中调用的是业务控制层(service)的方法接口。返回有地址和请求参数的ModelAndView对象(其中装载着参数如name,id,和目标地址即相应的显示页面如jsp,用Map存储,然后放到request对象中)到前端控制器,然后前端控制器把ModelAndView传给视图解析器,加上解析器中设置的jsp地址的前缀和后缀,然后把视图返回给前端控制器,再进行视图的渲染(把map中数据填充的request对象中),返回给客户端。

由于接触时间不长,理解浅陋,以照着网上教程做的CRUD为例,回顾一遍

三、CRUD回顾CRUD功能分解
  • 查询数据库数据,分页显示

  • 添加信息

    • 数据校验,校验用户名和邮箱是否合法

    • 前端jquery校验,后端使用JSR303

  • 修改信息

  • 单个(批量)删除信息

  • ajax请求完成CRUD

  • Rest风格的url

项目搭建

基础框架:SSM,数据库:MySQL,前端框架:Bootstrap快速搭建
Helper(MyBatis工具),逆向工程MyBatis Generator
Maven管理jar包
此项目是在eclipse下进行的,tomcat及maven的配置此处省略

文件配置
  • pom.xml文件,主要为4大类的配置

  • 日志文件


      org.slf4j
      slf4j-api
      1.7.12
    

    
      ch.qos.logback
      logback-core
      1.1.1
    

    
      ch.qos.logback
      logback-classic
      1.1.1
    
  • 数据库依赖

 
      mysql
      mysql-connector-java
      5.1.37
      runtime
    

    
      c3p0
      c3p0
      0.9.1.2
    
  • DAO框架依赖


      org.mybatis
      mybatis
      3.3.0
    
    
      org.mybatis
      mybatis-spring
      1.2.3
    
  • Spring相关依赖


      org.springframework
      spring-core
      4.3.17.RELEASE
    
    
      org.springframework
      spring-beans
      4.3.17.RELEASE
    
    
      org.springframework
      spring-context
      4.1.7.RELEASE
    
    
    
      org.springframework
      spring-jdbc
      4.3.17.RELEASE
    
    
      org.springframework
      spring-tx
      4.3.17.RELEASE
    
    
      org.springframework
      spring-web
      4.3.17.RELEASE
    
    
      org.springframework
      spring-webmvc
      4.3.17.RELEASE
    

    
    
      org.springframework
      spring-test
      4.3.7.RELEASE
    
下面是SpringMVC的配置文件

    
    
    
        
    
        
            
                application/json;charset=UTF-8
            
        
    
    

        
            
                
            
        
    
    
    
    
    
    
    
        
        
        
        
    
    
    
    
    
    
    
Spring MyBatis的整合

    
        
    
    
    
        
        
        
        
    
    
    
    
    
    
        
        
        
        
        
         stuInfos=stuInfoService.getAll();                // PageInfo包装查询结果,封装了详细的分页信息和详细数据
                // 连续显示5页
                PageInfo pageInfo=new PageInfo(stuInfos,5);                return Msg.success().add("pageInfo",pageInfo);
    }     
    @RequestMapping(value = "/stuInfo/{infoIds}", method = RequestMethod.DELETE)    @ResponseBody
    public Msg deleteEmpById(@PathVariable("infoIds") String ids) {        if (ids.contains("-")) {
            String[] strIds = ids.split("-");            
            // 另一种实现
            List del_ids = new ArrayList();            for (String str : strIds) {
                del_ids.add(Integer.parseInt(str));
            }
            stuInfoService.deleteAll(del_ids);

        } else {
            stuInfoService.deleteStuInfoId(Integer.parseInt(ids));
        }        return Msg.success();
    }    
    
    
    //@RequestMapping("/stuInfo")
    public String getStuInfo(@RequestParam(value="pn",defaultValue="1")Integer pn,Model model) {        //这是一个分页查询
        //引入PageHelper 传入页码以及每页的大小
        PageHelper.startPage(pn, 5);
        List stuInfos=stuInfoService.getAll();
        PageInfo pageInfo=new PageInfo(stuInfos,5);
        model.addAttribute("pageInfo", pageInfo);        return "list";
    }
}

这里主要是从数据库查询所有的数据,以json数据串的形式返回,再由jquery对数据处理,以表格形式显示在页面(这里没有用bootstrap-table,我想boststrap_table做出来的表格会更好吧),其中分页的具体实现在相应js文件中



作者:叫我店小二
链接:https://www.jianshu.com/p/d7d29abc505b


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/245134.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号