亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SSM框架下如何實(shí)現(xiàn)數(shù)據(jù)從后臺傳輸?shù)角芭_

 更新時間:2022年05月05日 09:57:34   作者:Rapper_cl  
這篇文章主要介紹了SSM框架下如何實(shí)現(xiàn)數(shù)據(jù)從后臺傳輸?shù)角芭_,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SSM數(shù)據(jù)從后臺傳輸?shù)角芭_

在SSM框架下,數(shù)據(jù)從后臺傳輸?shù)角芭_主要有以下幾種方法:

  • 通過HttpServletRequest對象進(jìn)行傳遞
  • 通過ModeandView對象進(jìn)行傳遞
  • 通過在在方法中添加形參Model進(jìn)行傳遞

接下來分批進(jìn)行講解:

通過HttpServletRequest對象進(jìn)行傳遞

前臺頁面Demo:

<form action="TestDemo.do" method="post">
<input type="text" name="username" value="${requestScope.textname}">
<input type="submit" value="提交">
</form>

后臺:

@RequestMapping(value="/TestDemo",method=RequestMethod.POST)
?? ?public String TestDemo(Model model, member mbr,HttpServletRequest request)?
?? ?{
?? ??? ?String text = "";
?? ??? ?request.setAttribute("textname", text);?
?? ??? ?return "";
?? ?}

通過ModeandView對象進(jìn)行傳遞

前臺:共用第一個前臺

后臺:

@RequestMapping(value="/TestDemo")
?? ?public ModelAndView TestDemo()?
?? ?{
?? ??? ?String text = "hello!";
?? ??? ?//ModelAndView中三個參數(shù),跳轉(zhuǎn)頁面,接收返回數(shù)據(jù)的屬性,返回的數(shù)據(jù)
?? ??? ?ModelAndView modelAndView = new ModelAndView("Demo","textname",text);?
?? ??? ?return modelAndView;
?? ?}

通過在在方法中添加形參Model進(jìn)行傳遞

前臺:共用第一個前臺

后臺:

@RequestMapping(value="/TestDemo")
?? ?public String TestDemo(Model model)?
?? ?{
?? ??? ?String text = "hello!";
?? ??? ?model.addAttribute("textname", text);
?? ??? ?return "Demo";
?? ?}

SSM框架前后端數(shù)據(jù)傳輸邏輯整理

由于代碼的學(xué)習(xí)一直都是根據(jù)視頻課以及有相關(guān)工作經(jīng)驗(yàn)的朋友學(xué)習(xí),所以自己思考的還是很不足。學(xué)習(xí)了很長時間碎片化的項(xiàng)目,也寫過一些小的項(xiàng)目,但是這之間的邏輯依然沒有吃透。嘗試總結(jié)一下SSM框架下前后端數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn),也是對這段時間框架學(xué)習(xí)的小總結(jié)。

本文會盡可能地梳理前端、后端、前后端之間的數(shù)據(jù)傳輸過程

SSM框架實(shí)現(xiàn)思路

另外一個博主的思路也有些類似

實(shí)現(xiàn)步驟

1.前端部分的頁面請求

這次主要看的是ajax傳值,頁面主要涉及這部分查詢結(jié)果的展示。

JSP部分代碼如下(注意是id="show"的部分進(jìn)行的表格查詢結(jié)果展示):

<div class="table-box">
			<table>
				<thead>
					<tr>
						<th class="num">序號</th>
						<th class="time">住院號</th>
						<th class="process">姓名</th>
						<th class="num">性別</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’)結(jié)合jsp,在后面會去spring_mvc的文件中進(jìn)行查詢。

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
					// 是否顯示跳轉(zhuǎn)第幾頁
					});
					$("#showbuttom").show();
				} else {
					alert("未找到信息!");
					$("#showbuttom").hide();
					$(".clear").click();
				}
				showList(lists, start, end);
			}
		}
	});
}

2.根據(jù)spring_mvc.xml配置文件,去尋找相應(yīng)的controller

這里是實(shí)現(xiàn)了一個url地址請求的攔截,可以看見這里將原始地址的".do"部分進(jìn)行了攔截,

去controller下進(jìn)行查找

3.在表現(xiàn)層找到了相應(yīng)的 PatientController.java

根據(jù)代碼,下面開始深層次套娃

	@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);// 設(shè)置出院狀態(tài)為未出院
		// System.out.println("當(dāng)前患者碼為:" + patientCode);
		List<Map<String, Object>> list = patientService.patientQuery(patientCode);
		log.info("患者查詢");
		for (Map<String, Object> map : list) {// 此處不對從庫中取出的時間做toString轉(zhuǎn)化會報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<Map<String, Object>>>(list));
		return json.toString();
	}

4.表現(xiàn)層controller去向業(yè)務(wù)層service調(diào)用查詢方法

5.service中實(shí)現(xiàn)的接口是對持久層(一些查詢語句封裝的地方)的調(diào)用

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 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})
	</insert>
	<select id="patientQuery"
		parameterType="com.qut.pojo.PatientCode" resultType="map">
		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 &gt;= #{start})
		and
		if(#{end} is
		null,0=0,admissionTime &lt;= #{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 &gt;= #{outStart})
		and
		if(#{outEnd} is null,0=0, leaveTime &lt;= #{outEnd})
		and
		if(#{outStatus} is null,0=0,leaveState = #{outStatus})
		and
		if(#{cerificateNo} is null,0=0,certificateNo = #{cerificateNo})
		order
		by
		id,admissionTime
	</select>

6.查詢語句與數(shù)據(jù)庫之間的關(guān)聯(lián)是通過數(shù)據(jù)庫連接配置實(shí)現(xiàn)的

這里還有一點(diǎn)疑惑,少說了什么 bean的注入等相關(guān)知識點(diǎn)未體現(xiàn)

找到了~視圖解析器

7.將最后查詢到的結(jié)果以json的格式傳給前端

在步驟3至步驟6實(shí)現(xiàn)了查詢并返回json的這樣一個功能。最后會將得到的結(jié)果通過加上.jsp實(shí)現(xiàn)傳輸給前端,利用web.xml

在servlert的這部分功能寫的還是有些不到位,servlet主要是請求與響應(yīng),所以應(yīng)該是一個入口也是一個出口。

后話

對于mybatis、spring、springmvc的部分其實(shí)還是有一些混淆,雖然能感知到他們分別在哪一個模塊發(fā)揮了作用。本文僅個人總結(jié),未來思路更清晰時,也會對文章進(jìn)行修繕~歡迎大家指正。希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis的xml文件時間范圍條件查詢方式

    Mybatis的xml文件時間范圍條件查詢方式

    這篇文章主要介紹了Mybatis的xml文件時間范圍條件查詢方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Java安全 ysoserial CommonsCollections3示例分析

    Java安全 ysoserial CommonsCollections3示例分析

    這篇文章主要為大家介紹了Java安全 ysoserial CommonsCollections3示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Spring的@CrossOrigin注解處理請求源碼解析

    Spring的@CrossOrigin注解處理請求源碼解析

    這篇文章主要介紹了Spring的@CrossOrigin注解處理請求源碼解析,@CrossOrigin源碼解析主要分為兩個階段@CrossOrigin注釋的方法掃描注冊,請求匹配@CrossOrigin注釋的方法,本文從源碼角度進(jìn)行解析,需要的朋友可以參考下
    2023-12-12
  • 解決java使用axios.js的post請求后臺時無法接收到入?yún)⒌膯栴}

    解決java使用axios.js的post請求后臺時無法接收到入?yún)⒌膯栴}

    今天小編就為大家分享一篇解決java使用axios.js的post請求后臺時無法接收到入?yún)⒌膯栴},具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • SpringCloud feign服務(wù)熔斷下的異常處理操作

    SpringCloud feign服務(wù)熔斷下的異常處理操作

    這篇文章主要介紹了SpringCloud feign服務(wù)熔斷下的異常處理操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring根據(jù)XML配置文件注入屬性的方法

    Spring根據(jù)XML配置文件注入屬性的方法

    下面小編就為大家?guī)硪黄猄pring根據(jù)XML配置文件注入屬性的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • java 防盜鏈詳解及解決辦法

    java 防盜鏈詳解及解決辦法

    這篇文章主要介紹了 java 防盜鏈詳解及解決辦法的相關(guān)資料,這里介紹了防盜鏈的概念、產(chǎn)生原因及Http中的referer,最后介紹解決辦法,需要的朋友可以參考下
    2017-07-07
  • JavaWeb中過濾器Filter的用法詳解

    JavaWeb中過濾器Filter的用法詳解

    過濾器通常對一些web資源進(jìn)行攔截,做完一些處理器再交給下一個過濾器處理,直到所有的過濾器處理器,再調(diào)用servlet實(shí)例的service方法進(jìn)行處理。本文將通過示例為大家講解JavaWeb中過濾器Filter的用法與實(shí)現(xiàn),需要的可以參考一下
    2022-08-08
  • Springboot中攔截GET請求獲取請求參數(shù)驗(yàn)證合法性核心方法

    Springboot中攔截GET請求獲取請求參數(shù)驗(yàn)證合法性核心方法

    這篇文章主要介紹了Springboot中攔截GET請求獲取請求參數(shù)驗(yàn)證合法性,在Springboot中創(chuàng)建攔截器攔截所有GET類型請求,獲取請求參數(shù)驗(yàn)證內(nèi)容合法性防止SQL注入,這種方法適用攔截get類型請求,需要的朋友可以參考下
    2023-08-08
  • Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng)

    Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java?Web實(shí)現(xiàn)簡易圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論