ssm前后端数据传输,ssm接收前台数据
目录
SSM数据从后台传输到前台,通过HttpServletRequest对象传输,通过ModeandView对象传输,通过在方法中添加形参模型来传输。安排了SSM框架前后端的数据传输逻辑,遵循了SSM框架的实现思路和步骤。
00-1010在SSM框架下,后台到前台的数据传输主要有以下几种方法:
传递HttpServletRequest对象,传递ModeandView对象,传递向方法添加形参模型。接下来我们分批讲解:
00-1010首页演示:
form action= test demo . do method= post input type= text name= username value= $ { request scope . text name } input type= submit value= submit /表单背景:
@ request mapping(value=/test demo ,method=RequestMethod。POST)公共字符串TestDemo(模型模型,成员mbr,HttpServletRequest请求){ String text=request.setAttribute(textname ,text);返回“”;}
00-1010前台:共享第一前台。
后台:
@ request mapping(value=/test demo )public modeland view test demo(){ String text= hello!;//modeland view中的三个参数,页面跳转,接收返回数据的属性,返回数据modeland view=new modeland view( demo , text name ,text);返回modelAndView}
00-1010前台:共享第一前台。
后台:
@ request mapping(value=/test demo )公共字符串test demo(Model Model){ String text= hello!;model.addAttribute(textname ,text);返回“演示”;}
SSM数据从后台传输到前台
因为对代码的学习一直是基于视频课和有相关工作经验的朋友,所以我自己的思考还是不足。我研究碎片化项目很久了,也写过一些小项目,但是它们之间的逻辑还是没有搞清楚。尝试总结一下SSM框架下前端和后端数据传输的实现,也是这次时间框架学习的一个小总结。
本文将尽可能梳理前端、后端、前端之间的数据传输过程。
通过HttpServletRequest对象进行传递
另一位博主也有类似的想法。
00-1010 1.前端部分的页面请求
这次主要看ajax值传输,页面主要涉及这部分查询结果的显示。
JSP部分代码如下(注意id=show 的部分显示的是表查询的结果):
div= table-box tableheadtth class= num 序号thth class= time 住院号thth class= process 名称thth class= num g
t;性别</th><th class="node">科室</th><th class="num">病房</th><th class="num">床位号</th><th class="num">入院情况</th><th class="time">入院时间</th></tr></thead><tbody id="show"></tbody></table></div>这里的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")@ResponseBodypublic 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<Map<String, Object>> list = patientService.patientQuery(patientCode);log.info("患者查询");for (Map<String, Object> map : list) {// 此处不对从库中取出的时间做toString转化会报java.lang.IllegalArgumentExceptionString 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<Map<String, Object>>>(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<Map<String, Object>> patientQuery(PatientCode patientCode);/*省略*/
xml部分查询
<?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.qut.mapper.PatientMapper"><insert id="patientAdd" parameterType="com.qut.pojo.Patient">insert intopatient(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})</insert><select id="patientQuery"parameterType="com.qut.pojo.PatientCode" resultType="map">selecta.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.contactsas "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"frompatient a LEFT JOIN doctor b ONa.doctorId = b.doctorIdLEFT JOINcategory c ON a.roomType = c.typeLEFT JOIN (SELECT e.parameter_values"value",e.parameter_name "name"fromparameter d LEFT JOIN paracode e ONd.`code` = e.`code`whered.name="科室") g ON a.department = g.`value`where1=1andif(#{patientId}is null,0=0,patientId=#{patientId})andif(#{name} is null,0=0,patientName like CONCAT(%,#{name},%))andif(#{departmentNo} isnull,0=0,department=#{departmentNo})andif(#{Docid} isnull,0=0,a.doctorId=#{Docid})andif(#{start} isnull,0=0,admissionTime >= #{start})andif(#{end} isnull,0=0,admissionTime <= #{end})andif(#{wardNo} isnull,0=0,roomNo=#{wardNo})andif(#{bedNo} is null,0=0,bedNo=#{bedNo})andif(#{outStart} is null,0=0,leaveTime >= #{outStart})andif(#{outEnd} is null,0=0, leaveTime <= #{outEnd})andif(#{outStatus} is null,0=0,leaveState = #{outStatus})andif(#{cerificateNo} is null,0=0,certificateNo = #{cerificateNo})orderbyid,admissionTime</select>
6.查询语句与数据库之间的关联是通过数据库连接配置实现的
这里还有一点疑惑,少说了什么 bean的注入等相关知识点未体现
找到了~视图解析器
7.将最后查询到的结果以json的格式传给前端
在步骤3至步骤6实现了查询并返回json的这样一个功能。最后会将得到的结果通过加上.jsp实现传输给前端,利用web.xml
在servlert的这部分功能写的还是有些不到位,servlet主要是请求与响应,所以应该是一个入口也是一个出口。
后话
对于mybatis、spring、springmvc的部分其实还是有一些混淆,虽然能感知到他们分别在哪一个模块发挥了作用。本文仅个人总结,未来思路更清晰时,也会对文章进行修缮~欢迎大家指正。希望能给大家一个参考,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。