SpringMVC 处理AJAX请求

编程入门 行业动态 更新时间:2024-10-23 21:29:54

<a href=https://www.elefans.com/category/jswz/34/1766363.html style=SpringMVC 处理AJAX请求"/>

SpringMVC 处理AJAX请求

AJAX

AJAX概念

        AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

        AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

        AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。

        简而言之:局部刷新。

AJAX简介

        AJAX 是一种用于创建快速动态网页的技术。

        通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

        传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

        有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

                Google Suggest 在 2005 年,Google 通过其 Google Suggest 使 AJAX 变得流行起来。

                Google Suggest 使用 AJAX 创造出动态性极强的 web 界面:当您在谷歌的搜索框输入

关键字时,JavaScript 会把这些字符发送到服务器,然后服务器会返回一个搜索建议的列表。

关于 jQuery 与 AJAX

        jQuery 提供多个与 AJAX 有关的方法。

        通过 jQuery AJAX 方法,您能够使用 HTTP Get 和 HTTP Post 从远程服务器上请求文本、HTML、XML 或 JSON - 同时您能够把这些外部数据直接载入网页的被选元素中。

        提示:如果没有 jQuery,AJAX 编程还是有些难度的。

        编写常规的 AJAX 代码并不容易,因为不同的浏览器对 AJAX 的实现并不相同。这意味着您必须编写额外的代码对浏览器进行测试。不过,jQuery 团队为我们解决了这个难题,我们只需要一行简单的代码,就可以实现 AJAX 功能。

AJAX定义和用法

JSON

什么是 JSON 

        JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

        JSON 是轻量级的文本数据交换格式

        JSON 独立于语言 *

        JSON 具有自我描述性,更易理解

JSON 语法规则

        JSON 语法是 JavaScript 对象表示法语法的子集。

                数据在名称/值对中

                数据由逗号分隔

                花括号保存对象

                方括号保存数组

Springmvc 处理ajax请求

        概要

                处理AJAX请求

                返回JSON数据

        架包支持

                项目中需要增加的jar包:

                        jackson-all-1.8.10.jar

                        fastjson-1.2.47.jar(阿里巴巴)  

                在控制器中增加方法

                        使用注解:@ResponseBody,@RequestBody

                        该注解设置返回值为JSON类型      

        案例展示

                1.使用原生的Str返回

                        跳转至sendjson.jsp页面

 @RequestMapping("/tosendjson.action")public String toSendJson() {logger.info("控制器跳转至:sendjson");return "sendjson";}

                        sendjson.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>AJAX</title><script src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script><script>function myFun() {//jquery获得文本框值得写法var name = $("#name").val();//使用AJAX完成参数传递,请求$.ajax({type: "post",url: "receive.action",data: name,contentType: 'application/json;charset=utf-8',success: function (data) {console.log(data);//将页面中的标题标签更新$("#h1").html(data);}});}</script>
</head>
<body>
<p><input type="text" id="name" name="name" placeholder="请输入姓名"></p>
<p><button type="button" onclick="myFun()">提交</button>
</p>
<h1 id="h1"></h1>
</body>
</html>

                        receive.action控制单元

 /** 中文乱码问题得到解决* 原理: 手动给对应的Accept返回制定格式编码数据。* 发现produces设置多个Accept只有第一个的charset是有用的,*/@RequestMapping(value = "/receive.action", produces = {"text/html;charset=UTF-8;", "application/json;"})@ResponseBodypublic String receive(@RequestBody String name) {logger.info(name);String str = "welcome欢迎" + name;logger.info(str);return str;}

                        运行结果,点击提交显示内容 

                2.使用对象返回,Json自动解析

                        跳转至sendjson2.jsp页面

    @RequestMapping("/tosendjson2")public String toSendJson2() {logger.info("控制器跳转至:sendjson2");return "sendjson2";}

                        sendjson2.jsp页面   


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>sendjson2</title><script src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script><script>var user = {name: "张",age: 22,tel: 13333333333}function myFun() {console.log(user);//将User对象转化为JSON类型的字符串var userStr = JSON.stringify(user);console.log(userStr);$.ajax({type: "post",url: "receive2.action",//请求服务器地址data: userStr,contentType: 'application/json;charset=utf-8',success: function (username) {console.log(username);$("#h1").html(username);}});}</script>
</head>
<body>
<pre>var user={name:"张",age:22,tel:13279560363}
</pre>
<h3>点击按钮,从页面中的js获取User对象,将该对象用JSON.stringify(user)方法将用户转化为字符串,然后送给后台</h3>
<button onclick="myFun()">确定</button>
<h1 id="h1"></h1>
</body>
</html>

                        receive2.action控制单元

@RequestMapping(value = "/receive2", produces = {"text/html;charset=UTF-8;", "application/json;"})@ResponseBodypublic String receive2(@RequestBody User user) {logger.info(user.getName());String str = "你好:" + user.getName();return str;}

                        运行结果,点击确定显示内容 

                 3.集合列表展式

                        产品类

package com.springmvc.po;import java.util.Date;/*** @Author : Eeerosss* @create 2022/9/1 17:08*/
public class Product {private int pid;private String pname;private String type;private double price;private Date pdate;public Product(int pid, String pname, String type, double price, Date pdate) {this.pid = pid;this.pname = pname;this.type = type;this.price = price;this.pdate = pdate;}@Overridepublic String toString() {return "Product{" +"pid=" + pid +", pname='" + pname + '\'' +", type='" + type + '\'' +", price=" + price +", pdate=" + pdate +'}';}public int getPid() {return pid;}public void setPid(int pid) {this.pid = pid;}public String getPname() {return pname;}public void setPname(String pname) {this.pname = pname;}public String getType() {return type;}public void setType(String type) {this.type = type;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public Date getPdate() {return pdate;}public void setPdate(Date pdate) {this.pdate = pdate;}
}

                        跳转至sendjson5.jsp页面

@RequestMapping("/tosendjson5")public String toSendJson5() {logger.info("控制器跳转至:sendjson5");return "sendjson5";}

                        sendjson5.jsp页面   

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>sendjson2</title><script src="${pageContext.request.contextPath}/js/jquery-1.4.4.min.js"></script><script>function myFun() {$.ajax({type: "post",url: "receive5.action",//请求服务器地址contentType: 'application/json;charset=utf-8',success: function (list) {console.log(list);//创建字符串,等待接收所有信息var html = "<tr><th>编号</th><th>产品名称</th><th>产品类型</th><th>产品价格</th><th>生产日期</th></tr>";$.each(list, function (i, item) {html += "<tr><td>" + item.pid + "</td><td>" + item.pname + "</td><td>" + item.type + "</td><td>" + item.price + "元</td><td>" + new Date(item.pdate).toLocaleString() + "</td></tr>";});console.log(html);$("#t").html(html);}});}</script>
</head>
<body>
<button onclick="myFun()">点击展示饮料列表</button>
<h1>饮料产品列表</h1>
<div><table id="t" border="1px" width="800px" style="border-collapse: collapse;text-align: center"></table>
</div>
</body>
</html>

                          receive5.action控制单元

  @RequestMapping("/receive5")@ResponseBodypublic List<Product>  receive5(){List<Product> list=new ArrayList<>();list.add(new Product(1,"可口可乐","碳酸饮料",3, new Date()));list.add(new Product(2,"茉莉蜜茶","茶饮料",3,new Date()));list.add(new Product(3,"农夫山泉","矿泉水",2,new Date()));list.add(new Product(4,"百事可乐","碳酸饮料",3,new Date()));list.add(new Product(5,"冰红茶","茶饮料",3,new Date()));list.add(new Product(6,"红牛","功能饮料",5,new Date()));return list;}

                         运行结果,点击提交显示内容 

                        点击展示饮料列表

        案例展示完成 

更多推荐

SpringMVC 处理AJAX请求

本文发布于:2024-02-10 16:34:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1676247.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:SpringMVC   AJAX

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!