最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?MVC傳遞json格式的數(shù)據(jù)兩種方法

 更新時(shí)間:2026年01月04日 15:54:18   作者:我不會(huì)寫代碼啊啊啊  
文章介紹了兩種使用SpringMVC傳遞JSON數(shù)據(jù)的方法,每種方法結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

測(cè)試使用Spring MVC傳遞json格式的數(shù)據(jù)

第一種方式:使用fastjson jar包
這里僅展示Servlet和jsp頁(yè)面(jsp頁(yè)面使用ajax)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="" onclick=" rel="external nofollow" testjson()">點(diǎn)擊發(fā)送請(qǐng)求</a>
	<script type="text/javascript">
		//原生Ajax
		//創(chuàng)建一個(gè)ajax方法
		function reqget(){
			//1、創(chuàng)建核心對(duì)象XMLHttpRequest
			var request=new XMLHttpRequest();
			//2、準(zhǔn)備請(qǐng)求 open(請(qǐng)求類型,請(qǐng)求地址,是否異步傳輸(一般為true))
			request.open("GET","servlet?name=張三&pwd=123456",true);
			//3、接收響應(yīng)數(shù)據(jù)
			request.onreadystatechange=function(){
				//4、判斷響應(yīng)是否結(jié)束
				if(request.readyState==4){
					//5、判斷狀態(tài)碼
					if(request.status==200 || request.status==304){
						//獲取響應(yīng)的數(shù)據(jù) responseText
						alert("GET : "+request.responseText);
					}
				}
			}
			//6、發(fā)送請(qǐng)求
			request.send();
		}
		function reqpost(){
			//1、創(chuàng)建核心對(duì)象XMLHttpRequest
			var request=new XMLHttpRequest();
			//2、準(zhǔn)備請(qǐng)求 open(請(qǐng)求類型,請(qǐng)求地址,是否異步傳輸(一般為true))
			request.open("POST","servlet",true);
			//3、接收響應(yīng)數(shù)據(jù)
			request.onreadystatechange=function(){
				//4、判斷響應(yīng)是否結(jié)束
				if(request.readyState==4){
					//5、判斷狀態(tài)碼
					if(request.status==200 || request.status==304){
						//獲取響應(yīng)的數(shù)據(jù) responseText
						alert("POST : "+request.responseText);
					}
				}
			}
			//設(shè)置請(qǐng)求頭(把數(shù)據(jù)類型轉(zhuǎn)換為url編碼的form表單)
			request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			//6、發(fā)送請(qǐng)求
			request.send("name=張三&pwd=123456");
		}
		function testjson(){
			//1、創(chuàng)建核心對(duì)象XMLHttpRequest
			var request=new XMLHttpRequest();
			//2、準(zhǔn)備請(qǐng)求 open(請(qǐng)求類型,請(qǐng)求地址,是否異步傳輸(一般為true))
			request.open("POST","servlet",true);
			//3、接收響應(yīng)數(shù)據(jù)
			request.onreadystatechange=function(){
				//4、判斷響應(yīng)是否結(jié)束
				if(request.readyState==4){
					//5、判斷狀態(tài)碼
					if(request.status==200 || request.status==304){
						//獲取響應(yīng)的數(shù)據(jù) responseText
						var msg=request.responseText;
						//解析Json字符串(轉(zhuǎn)換為對(duì)象)
						var obj=eval("("+msg+")");
						alert(obj.code);
						alert(obj.msg);
					}
				}
			}
			//設(shè)置請(qǐng)求頭(把數(shù)據(jù)類型轉(zhuǎn)換為url編碼的form表單)
			request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			//6、發(fā)送請(qǐng)求
			request.send("name=張三&pwd=123456");
		}
	</script>
</body>
</html>
package com.xyj.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
@WebServlet(name = "servlet", urlPatterns = { "/servlet" })
public class Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
    public Servlet() {
        super();
    }
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		System.out.println("接收到了前端的請(qǐng)求");
		/*String name = request.getParameter("name");
		String pwd = request.getParameter("pwd");
		System.out.println(name);
		System.out.println(pwd);
		String msg="張三".equals(name) && "123456".equals(pwd)?"登錄成功":"登錄失敗";
		response.getWriter().print(msg);*/
		//返回json數(shù)據(jù)
		Result r=new Result();
		r.setCode(0);
		r.setMsg("獲取信息成功");
		String jsonString = JSONObject.toJSONString(r);
		response.getWriter().print(jsonString);
	}
}

第二種方式:
第二種方式使用Spring MVC和另外三個(gè)jar包,分別是:

使用這種方式需要首先在Spring MVC的配置文件中開啟Spring MVC的注解

<!-- 開啟Spring MVC注解 -->
	<mvc:annotation-driven></mvc:annotation-driven>

然后編寫控制器,如:

package com.xyj.handler;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.xyj.entity.Emp;
@Controller	//把當(dāng)前類標(biāo)記為控制器
public class TestHandler {
	@RequestMapping(value="testJson",produces="application/json;charset=utf-8")
	@ResponseBody //把返回的值轉(zhuǎn)化為json對(duì)象
	public List<Emp> testJson() {
		List<Emp> list=new ArrayList<Emp>();
		Emp emp1=new Emp(1001,"張武","werw45");
		Emp emp2=new Emp(1002,"張淑","3e4t5y");
		Emp emp3=new Emp(1001,"張靈","fr6565");
		list.add(emp1);
		list.add(emp2);
		list.add(emp3);
		return list;//集合會(huì)自動(dòng)轉(zhuǎn)換成json數(shù)組
	}
	@RequestMapping(value="testJson2",produces="application/json;charset=utf-8")
	@ResponseBody //把返回值轉(zhuǎn)化為json對(duì)象
	public Result testJson2(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		System.out.println("接收到了前端的請(qǐng)求");
		//返回json數(shù)據(jù)
		Result r=new Result();
		r.setCode(0);
		r.setMsg("獲取信息成功");
		return r;
	}
}

@ResponseBody注解,該注解的作用是將標(biāo)注該注解的處理方法的返回結(jié)果直接寫入HTTP Response Body(Response對(duì)象的body數(shù)據(jù)區(qū))中。一般情況下,@ResponseBody都會(huì)在異步獲取數(shù)據(jù)時(shí)使用,被其標(biāo)注的處理方法返回的數(shù)據(jù)將輸出到響應(yīng)流中,客戶端獲取并顯示數(shù)據(jù)。

@RequestMapping中配置produces是為了解決亂碼問題。
produces:指定返回的內(nèi)容類型。produces=“application/json;charset=utf-8”:表示該處理方法將產(chǎn)生JSON格式的數(shù)據(jù),此時(shí)會(huì)根據(jù)請(qǐng)求報(bào)文頭中事務(wù)Accept進(jìn)行匹配,若請(qǐng)求報(bào)文頭“Accept:application/json”時(shí)即可匹配,并且字符串的轉(zhuǎn)換編碼為“UTF-8”。

訪問testJson,顯示如下:

但是使用上面的方式需要在每一個(gè)方法上面都加入@ResponseBody注解,有什么方式能自動(dòng)使所有方法都返回json數(shù)據(jù)呢,只需把類上面的@Controller注解替換為@RestController注解即可

到此這篇關(guān)于Spring MVC傳遞json格式的數(shù)據(jù)的文章就介紹到這了,更多相關(guān)spring mvc傳遞json數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot整合JwtHelper實(shí)現(xiàn)非對(duì)稱加密

    Springboot整合JwtHelper實(shí)現(xiàn)非對(duì)稱加密

    本文主要介紹了Springboot整合JwtHelper實(shí)現(xiàn)非對(duì)稱加密,主要介紹兩種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Spring Security 最佳實(shí)戰(zhàn)指南

    Spring Security 最佳實(shí)戰(zhàn)指南

    文章介紹了SpringSecurity框架的核心概念、配置、最佳實(shí)踐、安全監(jiān)控、生產(chǎn)環(huán)境配置以及常見安全漏洞與解決方案,通過實(shí)際案例,展示了如何在電商平臺(tái)和金融系統(tǒng)中應(yīng)用SpringSecurity,保護(hù)數(shù)據(jù)安全,強(qiáng)調(diào)安全是一個(gè)持續(xù)過程,需要不斷更新和維護(hù),感興趣的朋友一起看看吧
    2026-04-04
  • Java高并發(fā)中的交換器Exchanger解析

    Java高并發(fā)中的交換器Exchanger解析

    這篇文章主要介紹了Java高并發(fā)中的交換器Exchanger解析,如果兩個(gè)線程并行處理,但在某個(gè)時(shí)刻需要互相交換自己已經(jīng)處理完的中間數(shù)據(jù),然后才能繼續(xù)往下執(zhí)行,這個(gè)時(shí)候就可以使用 Exchanger,需要的朋友可以參考下
    2023-12-12
  • SpringBoot集成Knife4j報(bào)錯(cuò):文件上傳不顯示文件域問題的解決方案

    SpringBoot集成Knife4j報(bào)錯(cuò):文件上傳不顯示文件域問題的解決方案

    在使用 Knife4j 為 Spring Boot 項(xiàng)目生成 API 文檔時(shí),開發(fā)者可能會(huì)遇到文件上傳功能不顯示文件域的問題,本文將詳細(xì)介紹如何解決這一問題,并提供完整的解決方案,需要的朋友可以參考下
    2025-05-05
  • Java使用Iterator迭代器遍歷集合數(shù)據(jù)的方法小結(jié)

    Java使用Iterator迭代器遍歷集合數(shù)據(jù)的方法小結(jié)

    這篇文章主要介紹了Java使用Iterator迭代器遍歷集合數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了java迭代器進(jìn)行集合數(shù)據(jù)遍歷的常見操作技巧,需要的朋友可以參考下
    2019-11-11
  • SpringCloud添加客戶端Eureka Client過程解析

    SpringCloud添加客戶端Eureka Client過程解析

    這篇文章主要介紹了SpringCloud添加客戶端Eureka Client過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot接受參數(shù)相關(guān)注解方式

    SpringBoot接受參數(shù)相關(guān)注解方式

    SpringBoot接受參數(shù)的注解包括@PathVariable、@RequestHeader、@RequestParameter、@CookieValue、@RequestBody、@RequestAttribute和@SessionAttribute等,每個(gè)注解都有詳細(xì)的使用方法和示例代碼
    2024-12-12
  • java使用數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列示例

    java使用數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列示例

    隊(duì)列是一種特殊的線性表,它只允許在表的前端(front)進(jìn)行刪除操作,只允許在表的后端(rear)進(jìn)行插入操作,下面介紹一下java使用數(shù)組和鏈表實(shí)現(xiàn)隊(duì)列的示例
    2014-01-01
  • 在IntelliJ IDEA中.idea文件是什么可以刪除嗎

    在IntelliJ IDEA中.idea文件是什么可以刪除嗎

    相信有很多小伙伴,在用idea寫java代碼的時(shí)候,創(chuàng)建工程總是會(huì)出現(xiàn).idea文件,該文件也從來沒去打開使用過,那么它在我們項(xiàng)目里面,扮演什么角色,到底能不能刪除它呢?這篇文章主要介紹了在IntelliJ IDEA中.idea文件是什么可以刪除嗎,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

宁蒗| 黑河市| 兰州市| 台州市| 盐池县| 石嘴山市| 沿河| 襄汾县| 武强县| 综艺| 金溪县| 北京市| 平阳县| 额尔古纳市| 霸州市| 乐东| 沅陵县| 翁源县| 开阳县| 容城县| 博客| 桐庐县| 宁安市| 聂拉木县| 株洲市| 阜平县| 锡林浩特市| 淮南市| 上思县| 宁波市| 扶绥县| 宁德市| 温泉县| 屏南县| 元氏县| 克山县| 花莲县| SHOW| 阜平县| 岑溪市| 曲沃县|