SSM框架 您所在的位置:网站首页 前端如何收集list数据 SSM框架

SSM框架

2024-07-11 16:19| 来源: 网络整理| 查看: 265

由于代码的学习一直都是根据视频课以及有相关工作经验的朋友学习,所以自己思考的还是很不足。学习了很长时间碎片化的项目,也写过一些小的项目,但是这之间的逻辑依然没有吃透。尝试总结一下SSM框架下前后端数据传输的实现,也是对这段时间框架学习的小总结。

文章目录 前言一、SSM框架实现思路二、实现步骤1.前端部分的页面请求2.根据spring_mvc.xml配置文件,去寻找相应的controller3.在表现层找到了相应的 PatientController.java4.表现层controller去向业务层service调用查询方法5.service中实现的接口是对持久层(一些查询语句封装的地方)的调用6.查询语句与数据库之间的关联是通过数据库连接配置实现的7.将最后查询到的结果以json的格式传给前端 后话

前言

本文会尽可能地梳理前端、后端、前后端之间的数据传输过程,可能存在个人理解的偏差之处,欢迎指正

一、SSM框架实现思路

这里参考了博客: https://blog.csdn.net/qq_41464123/article/details/104358326?utm_medium=distribute.pc_relevant.none-task-blog-title-1&spm=1001.2101.3001.4242

在这里插入图片描述 另外一个博主的思路也有些类似

在这里插入图片描述

二、实现步骤 1.前端部分的页面请求

这次主要看的是ajax传值,页面主要涉及这部分查询结果的展示。

在这里插入图片描述

JSP部分代码如下(注意是id="show"的部分进行的表格查询结果展示):

序号 住院号 姓名 性别 科室 病房 床位号 入院情况 入院时间

这里的url地址(url : ‘patient/patientQuery.do’)结合jsp,在后面会去spring_mvc的文件中进行查询。

JS部分代码如下(仅展示ajax部分):

var list; var $tbody = $("#show"); var start = 0; var end = 15; function patientQuery() { var queryData = $("#patientFindForm").serialize(); $.ajax({ url : 'patient/patientQuery.do', type : 'post', data : queryData, dataType : 'JSON', success : function(result) { if (result.state == 0) { var lists = result.data; $tbody.empty(); // 分页 if (lists.length > 0) { $('.pagination').pagination(lists.length, { callback : function(page) { start = page * this.items_per_page; end = (page + 1) * this.items_per_page; $tbody.empty(); showList(lists, start, end); return true; }, display_msg : true, // 是否显示记录信息 setPageNo : true // 是否显示跳转第几页 }); $("#showbuttom").show(); } else { alert("未找到信息!"); $("#showbuttom").hide(); $(".clear").click(); } showList(lists, start, end); } } }); } 2.根据spring_mvc.xml配置文件,去寻找相应的controller

这里是实现了一个url地址请求的拦截,可以看见这里将原始地址的".do"部分进行了拦截, 在这里插入图片描述 去controller下进行查找

在这里插入图片描述

3.在表现层找到了相应的 PatientController.java

根据代码,下面开始深层次套娃 在这里插入图片描述

@RequestMapping(value = "/patientQuery.do", produces = "application/json;charset=utf-8") @ResponseBody public String patientQuery(HttpServletRequest request) throws ParseException { PatientCode patientCode = new PatientCode(); String patientId = BaseUtils.toString(request.getParameter("patientId")); String name = BaseUtils.toString(request.getParameter("name")); patientCode.setPatientId(patientId); patientCode.setDepartmentNo(BaseUtils.toInteger(request.getParameter("departmentNo"))); // patientCode.setDocid(BaseUtils.toInteger(request.getParameter("Docid"))); patientCode.setName(name); patientCode.setWardNo(BaseUtils.toInteger(request.getParameter("wardNo"))); patientCode.setBedNo(BaseUtils.toInteger(request.getParameter("bedNo"))); patientCode.setStart(BaseUtils.toDate(request.getParameter("start"))); patientCode.setEnd(BaseUtils.toDate(request.getParameter("end"))); patientCode.setOutStatus(0);// 设置出院状态为未出院 // System.out.println("当前患者码为:" + patientCode); List list = patientService.patientQuery(patientCode); log.info("患者查询"); for (Map map : list) {// 此处不对从库中取出的时间做toString转化会报java.lang.IllegalArgumentException String admissionTime = map.get("admissionTime").toString(); map.put("admissionTime", admissionTime); String birth = map.get("birth").toString(); map.put("birth", birth); } JSON json = JSONSerializer.toJSON(new JsonResult(list)); return json.toString(); } 4.表现层controller去向业务层service调用查询方法

在这里插入图片描述

5.service中实现的接口是对持久层(一些查询语句封装的地方)的调用

Mapper部分 PatientMapper .java接口

@Repository("patientMapper") public interface PatientMapper { /** * 病人的添加 * * @param patient */ void patientAdd(Patient patient); /** * 病人列表的查询 * * @return */ List patientQuery(PatientCode patientCode); /*省略*/

xml部分查询

insert into patient (patientId,patientName,gender,nation,birth,department,certificateNo,workUnit,maritalStatus,doctorId,admissionTime,homeAddress,homePhone,contacts,contactsPhone,admissionStatus,roomType,roomNo,bedNo,state) values (#{patientId},#{name},#{gender},#{nation},#{birth},#{department},#{cerificateNo},#{workUnit},#{maritalStatus},#{doctorId},NOW(),#{homeAddress},#{homePhone},#{contacts},#{contactsPhone},#{admissionStatus},#{roomType},#{roomNo},#{bedNo},#{state}) select a.id as "id", a.patientId as "patientId", a.patientName as "name", a.gender as "gender", a.nation as "nation", a.birth as "birth", a.department as "department", g.`name` as "departmentName", a.certificateNo as "cerificateNo", a.workUnit as "workUnit", a.doctorId as "doctorId", b.`name` as "doctorName", a.admissionTime as "admissionTime", a.homeAddress as "homeAddress", a.homePhone as "homePhone", a.contacts as "contacts", a.contactsPhone as "contactsPhone", a.admissionStatus as "admissionStatus", a.roomType as "roomType", c.`name` as "roomTypeName", a.roomNo as "roomNo", a.bedNo as "bedNo", a.state as "state", a.settlementState as "settlementState", a.leaveTime as "leaveTime" from patient a LEFT JOIN doctor b ON a.doctorId = b.doctorId LEFT JOIN category c ON a.roomType = c.type LEFT JOIN ( SELECT e.parameter_values "value",e.parameter_name "name" from parameter d LEFT JOIN paracode e ON d.`code` = e.`code` where d.name="科室" ) g ON a.department = g.`value` where 1=1 and if(#{patientId} is null,0=0,patientId=#{patientId}) and if(#{name} is null,0=0, patientName like CONCAT('%',#{name},'%')) and if(#{departmentNo} is null,0=0,department=#{departmentNo}) and if(#{Docid} is null,0=0,a.doctorId=#{Docid}) and if(#{start} is null,0=0,admissionTime ;= #{start}) and if(#{end} is null,0=0,admissionTime ;= #{end}) and if(#{wardNo} is null,0=0,roomNo=#{wardNo}) and if(#{bedNo} is null,0=0,bedNo=#{bedNo}) and if(#{outStart} is null,0=0,leaveTime ;= #{outStart}) and if(#{outEnd} is null,0=0, leaveTime ;= #{outEnd}) and if(#{outStatus} is null,0=0,leaveState = #{outStatus}) and if(#{cerificateNo} is null,0=0,certificateNo = #{cerificateNo}) order by id,admissionTime 6.查询语句与数据库之间的关联是通过数据库连接配置实现的

这里还有一点疑惑,少说了什么 bean的注入等相关知识点未体现

在这里插入图片描述 找到了~视图解析器

在这里插入图片描述

7.将最后查询到的结果以json的格式传给前端

在步骤3至步骤6实现了查询并返回json的这样一个功能。最后会将得到的结果通过加上.jsp实现传输给前端,利用web.xml 在这里插入图片描述 在这里插入图片描述 在servlert的这部分功能写的还是有些不到位,servlet主要是请求与响应,所以应该是一个入口也是一个出口。

后话

对于mybatis、spring、springmvc的部分其实还是有一些混淆,虽然能感知到他们分别在哪一个模块发挥了作用。本文仅个人总结,未来思路更清晰时,也会对文章进行修缮~欢迎大家指正。在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有