Spring 全家桶之 Spring Web MVC(六)- AJAX & Fileupload(上)

简介: Spring 全家桶之 Spring Web MVC(六)- AJAX & Fileupload

一、Spring MVC 处理 AJAX 请求

Spring MVC 返回 JSON 格式数据

拷贝spring-mvc-crud项目,重命名为spring-mvc-ajax。Spring MVC 处理 json 格式的数据需要导入jackson相关依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.13.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.13.1</version>
</dependency>
复制代码

添加依赖之后,要在Project Structure -> Artifacts 目录下把右侧的JAR包全都put到lib文件夹下 新增一个Controller并使用@RestController注解标注在该类上

@RestController
public class AnotherController {
    @Autowired
    private EmployeeDao employeeDao;
    @RequestMapping(value = "/list_by_json")
    public Collection<Employee> listByJson(){
        Collection<Employee> all = employeeDao.getAll();
        return all;
    }
}    
复制代码

重新启动Tomcat,浏览器输入http://localhost:8080/list_by_json

f26c0582149f46b8b16d3be456f1b96b_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

浏览器中显示了所有员工的数据,并以JSON格式进行展示

@JsonIgnore

@JsonIgnore注解可以将某些属性在转换成JSON格式数据时进行忽略,在Employee实体类的Department属性上增加@JsonIgnore注解

public class Employee {
   // 其余代码保持不变 
   @JsonIgnore
   private Department department;
}   
复制代码

重新启动应用,浏览器输入http://localhost:8080/list_by_json

3069722cf5834131b28bb0ea7bcb76ff_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

可以看出浏览器中展示的Employee数据忽略了Department属性,不再展示Department属性信息

@JsonFormat

添加@JsonFormat注解,指定输出的格式

public class Employee{
    // 其余代码保持不变
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birth = new Date();
}
复制代码

重新启动应用,浏览器输入http://localhost:8080/list_by_json

3fade0f9fbe248dbac6b88c409282e6e_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

时间显示的格式即为@JsonFormat注解指定的格式,而不加@JSONFormat注解默认为时间戳戳格式,如下图所示

59a7bd77292e4fcfae7c65fbf58064f9_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

Spring MVC 处理 AJAX 请求

在index.jsp同级目录下新增一个页面emps.jsp,使用ajax请求获取所有员工并显示在页面上

<%@page import="java.util.Date"%>
<%@ 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标签内容省略-->
<body>
<%=new Date() %>
<a href="${ctp }/list_by_json">ajax获取所有员工</a><br/>
<div>
</div>
<script type="text/javascript">
    $("a:first").click(function(){
        //1、发送ajax获取所有员工
        $.ajax({
            url:"${ctp}/list_by_json",
            type:"GET",
            success:function(data){
                //console.log(data);
                $.each(data,function(){
                    var empInfo = this.lastName+"-->"+this.birth+"--->"+this.gender;
                    $("div").append(empInfo+"<br/>");
                });
            }
        });
        return false;
    });
</script>
</body>
</html>
复制代码

重新启动应用,浏览器输入http://localhost:8080/emps.jsp, 点击页面的超链接,即可获取所有员工的数据

0504186b3e1b487f8bdc345c96003660_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

@RequestBody注解

@RequestBody注解可以直接获得请求体,在AnotherController中增加一个方法postReq,用来处理前端的post请求

@RequestMapping("/post_request")
public String postReq(@RequestBody String user){
    System.out.println("请求体:" + user);
    return "success";
}
复制代码

新增一个页面post.jsp,发送post表单请求到postReq方法

<h2>使用表单发送POST请求</h2>
<div>
    <form action="/post_request" method="post">
        <input name="username" value="stark">
        <input name="password" value="123456">
        <input type="submit">
    </form>
</div>
复制代码

重新启动应用,浏览器进入到http://localhost:8080/post.jsp, 点击提交按钮

a40f8f747d1a4c16aaa3abfc63bd4754_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

请求提数据被打印在控制台中

在post.jsp页面增加一个ajax的post请求

<h2>使用Ajax发送JSON格式的POST请求</h2>
<a href="/post_request">发送</a>
<script type="text/javascript">
    $("a:first").click(function(){
        var emp = {lastName:"Banner", email:"banner@gmail.com",gender:0};
        var empStr = JSON.stringify(emp);
        //1、发送ajax获取携带JSON格式数据
        $.ajax({
            url:"${ctp}/post_request",
            type:"POST",
            data:empStr,
            contentType: "application/json",
            success:function(data){
                //console.log(data);
                alert(data);
            }
        });
        return false;
    });
</script>
复制代码

浏览器发送http://localhost:8080/post.jsp ,点击发送超链接

ee82d6a63bdb4914aad36e20943235cf_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

浏览器发送的请求体为JSON格式的数据

cb8bc66c417749fbad01993559bc84e9_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

@RequestBody注解将JSON格式数据转换成Employee实体类对象


目录
打赏
0
0
0
0
4
分享
相关文章
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
119 7
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
142 7
Spring Boot 入门:简化 Java Web 开发的强大工具
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
121 3
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
120 1
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
使用 Spring Boot 公开 SOAP Web 服务端点:详细指南
415 0
惊呆了!学会AJAX与Fetch API,你的Python Web项目瞬间高大上!
在Web开发领域,AJAX与Fetch API是提升交互体验的关键技术。AJAX(Asynchronous JavaScript and XML)作为异步通信的先驱,通过XMLHttpRequest对象实现了局部页面更新,提升了应用流畅度。Fetch API则以更现代、简洁的方式处理HTTP请求,基于Promises提供了丰富的功能。当与Python Web框架(如Django、Flask)结合时,这两者能显著增强应用的响应速度和用户体验,使项目更加高效、高大上。
103 2
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
从零到精通,AJAX与Fetch API让你的Python Web前后端交互无所不能!
82 3
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
111 7
颠覆传统!AJAX、Fetch API与Python后端,开启Web开发新篇章!
在Web开发领域,技术的快速迭代推动着应用不断进化。传统前后端交互方式已无法满足现代Web应用对高效、实时性和用户体验的需求。AJAX作为异步通信的先驱,使页面无需刷新即可更新部分内容,显著提升用户体验;尽管XML曾是其主要数据格式,但如今JSON已成为主流。Fetch API则以其简洁、灵活的特点成为AJAX的现代替代品,基于Promises的异步请求让开发更加高效。与此同时,Python后端凭借高效稳定和丰富的库支持,成为众多开发者的首选,无论是轻量级的Flask还是全功能的Django,都能为Web应用提供强大的支撑。
73 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等