欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

前臺(tái)頁(yè)面Demo:

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

后臺(tái):

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

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

前臺(tái):共用第一個(gè)前臺(tái)

后臺(tái):

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

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

前臺(tái):共用第一個(gè)前臺(tái)

后臺(tái):

@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í)了很長(zhǎng)時(shí)間碎片化的項(xiàng)目,也寫(xiě)過(guò)一些小的項(xiàng)目,但是這之間的邏輯依然沒(méi)有吃透。嘗試總結(jié)一下SSM框架下前后端數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn),也是對(duì)這段時(shí)間框架學(xué)習(xí)的小總結(jié)。

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

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

另外一個(gè)博主的思路也有些類(lèi)似

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

1.前端部分的頁(yè)面請(qǐng)求

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

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

<div class="table-box">
			<table>
				<thead>
					<tr>
						<th class="num">序號(hào)</th>
						<th class="time">住院號(hào)</th>
						<th class="process">姓名</th>
						<th class="num">性別</th>
						<th class="node">科室</th>
						<th class="num">病房</th>
						<th class="num">床位號(hào)</th>
						<th class="num">入院情況</th>
						<th class="time">入院時(shí)間</th>
					</tr>
				</thead>
				<tbody id="show">
				</tbody>
			</table>
		</div>

這里的url地址(url : ‘patient/patientQuery.do’)結(jié)合jsp,在后面會(huì)去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();
				// 分頁(yè)
				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)第幾頁(yè)
					});
					$("#showbuttom").show();
				} else {
					alert("未找到信息!");
					$("#showbuttom").hide();
					$(".clear").click();
				}
				showList(lists, start, end);
			}
		}
	});
}

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

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

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

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

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

	@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) {// 此處不對(duì)從庫(kù)中取出的時(shí)間做toString轉(zhuǎn)化會(huì)報(bào)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)的接口是對(duì)持久層(一些查詢語(yǔ)句封裝的地方)的調(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.查詢語(yǔ)句與數(shù)據(jù)庫(kù)之間的關(guān)聯(lián)是通過(guò)數(shù)據(jù)庫(kù)連接配置實(shí)現(xiàn)的

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

找到了~視圖解析器

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

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

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

后話

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

相關(guān)文章

  • Mybatis的xml文件時(shí)間范圍條件查詢方式

    Mybatis的xml文件時(shí)間范圍條件查詢方式

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

    Java安全 ysoserial CommonsCollections3示例分析

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

    Spring的@CrossOrigin注解處理請(qǐng)求源碼解析

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

    解決java使用axios.js的post請(qǐng)求后臺(tái)時(shí)無(wú)法接收到入?yún)⒌膯?wèn)題

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

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

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

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

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

    java 防盜鏈詳解及解決辦法

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

    JavaWeb中過(guò)濾器Filter的用法詳解

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

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

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

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

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

最新評(píng)論