SSM框架下如何实现数据从后台传输到前台
目录
- SSM数据从后台传输到前台
- 通过HttpServletRequest对象进行传递
- 通过ModeandView对象进行传递
- 通过在在方法中添加形参Model进行传递
- SSM框架前后端数据传输逻辑整理
- SSM框架实现思路
- 实现步骤
- 后话
SSM数据从后台传输到前台 在SSM框架下,数据从后台传输到前台主要有以下几种方法:
- 通过HttpServletRequest对象进行传递
- 通过ModeandView对象进行传递
- 通过在在方法中添加形参Model进行传递
通过HttpServletRequest对象进行传递
前台页面Demo:
后台:
@RequestMapping(value="https://www.it610.com/TestDemo",method=RequestMethod.POST)public String TestDemo(Model model, member mbr,HttpServletRequest request) {String text = ""; request.setAttribute("textname", text); return ""; }
通过ModeandView对象进行传递
前台:共用第一个前台
后台:
@RequestMapping(value="https://www.it610.com/TestDemo")public ModelAndView TestDemo() {String text = "hello!"; //ModelAndView中三个参数,跳转页面,接收返回数据的属性,返回的数据ModelAndView modelAndView = new ModelAndView("Demo","textname",text); return modelAndView; }
通过在在方法中添加形参Model进行传递
前台:共用第一个前台
后台:
@RequestMapping(value="https://www.it610.com/TestDemo")public String TestDemo(Model model) {String text = "hello!"; model.addAttribute("textname", text); return "Demo"; }
SSM框架前后端数据传输逻辑整理 由于代码的学习一直都是根据视频课以及有相关工作经验的朋友学习,所以自己思考的还是很不足。学习了很长时间碎片化的项目,也写过一些小的项目,但是这之间的逻辑依然没有吃透。尝试总结一下SSM框架下前后端数据传输的实现,也是对这段时间框架学习的小总结。
本文会尽可能地梳理前端、后端、前后端之间的数据传输过程
SSM框架实现思路
文章图片
另外一个博主的思路也有些类似
文章图片
实现步骤
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 = https://www.it610.com/article/$("#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 = "https://www.it610.com/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
4.表现层controller去向业务层service调用查询方法
文章图片
5.service中实现的接口是对持久层(一些查询语句封装的地方)的调用
Mapper部分 PatientMapper .java接口
@Repository("patientMapper")public interface PatientMapper { /*** 病人的添加* * @param patient*/ void patientAdd(Patient patient); /*** 病人列表的查询* * @return*/ List
xml部分查询
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}) 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
6.查询语句与数据库之间的关联是通过数据库连接配置实现的
这里还有一点疑惑,少说了什么 bean的注入等相关知识点未体现
文章图片
找到了~视图解析器
文章图片
7.将最后查询到的结果以json的格式传给前端
在步骤3至步骤6实现了查询并返回json的这样一个功能。最后会将得到的结果通过加上.jsp实现传输给前端,利用web.xml
文章图片
文章图片
在servlert的这部分功能写的还是有些不到位,servlet主要是请求与响应,所以应该是一个入口也是一个出口。
后话
对于mybatis、spring、springmvc的部分其实还是有一些混淆,虽然能感知到他们分别在哪一个模块发挥了作用。本文仅个人总结,未来思路更清晰时,也会对文章进行修缮~欢迎大家指正。希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- curl 下载地址中有特殊字符解决方案
- Win10运用迅雷下载提示“资源不足”怎样办?
- svchost是啥进程?Win10下svchost禁用无效一直占用网速的处理
- Win10系统局域网下共享文件的办法
- JS框架会在2020年引发一场前端革命吗()
- python个人使用代码|python示例--下载mysql数据库中数据--excel表格,合并表格
- 投稿|侯毅辞去多家盒马分公司职位,阿里容不下“创始人”?
- 更轻,更快-Svelte框架指南
- 面试突击49(说一下 JUC 中的 Exchange 交换器())
- “无法为Android模拟器创建上下文0x3005”