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实体类对象


相关文章
|
6天前
|
Java 数据库连接 数据库
spring--为web(1),富士康java面试题整理
spring--为web(1),富士康java面试题整理
|
8天前
|
前端开发 Java 测试技术
Java一分钟之Spring MVC:构建Web应用
【5月更文挑战第15天】Spring MVC是Spring框架的Web应用模块,基于MVC模式实现业务、数据和UI解耦。常见问题包括:配置DispatcherServlet、Controller映射错误、视图解析未设置、Model数据传递遗漏、异常处理未配置、依赖注入缺失和忽视单元测试。解决这些问题可提升代码质量和应用性能。注意配置`web.xml`、`@RequestMapping`、`ViewResolver`、`Model`、`@ExceptionHandler`、`@Autowired`,并编写测试用例。
298 3
|
8天前
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
13 2
|
8天前
|
Java 应用服务中间件 测试技术
深入探索Spring Boot Web应用源码及实战应用
【5月更文挑战第11天】本文将详细解析Spring Boot Web应用的源码架构,并通过一个实际案例,展示如何构建一个基于Spring Boot的Web应用。本文旨在帮助读者更好地理解Spring Boot的内部工作机制,以及如何利用这些机制优化自己的Web应用开发。
34 3
|
6天前
|
前端开发 Java 关系型数据库
使用IDEA搭建一个Spring + AOP (权限管理 ) + Spring MVC
使用IDEA搭建一个Spring + AOP (权限管理 ) + Spring MVC
|
7天前
|
前端开发 JavaScript 开发者
深入理解MVC和MVVM:构建现代Web应用的利器
深入理解MVC和MVVM:构建现代Web应用的利器
|
8天前
|
JSON 前端开发 Java
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解(下)
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解
8 0
|
8天前
|
JSON 前端开发 Java
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解(上)
【JavaEE】让“单车变摩托”的神级框架—Spring MVC的深入讲解
10 0
|
8天前
|
前端开发 Java Spring
Java Web ——MVC基础框架讲解及代码演示(下)
Java Web ——MVC基础框架讲解及代码演示
15 1
|
8天前
|
设计模式 前端开发 网络协议
Java Web ——MVC基础框架讲解及代码演示(上)
Java Web ——MVC基础框架讲解及代码演示
9 0