springMvc 学习03

RESTful 风格
后端不返回视图 只返回一段数据 json格式 或者xml 的数据

    @GetMapping("/js")
    @ResponseBody
    public String ajaxjs(){
        return "{\"message\":\"helloworld\"}";
    }

html 编写ajax 异步获取json 数据


<html>
<head>
    <meta charset="utf-8">
    <script src="jquery-3.4.1.min.js"></script>
    <script>
        $(function () {
            $("#btn").click(function () {
                $.ajax({
                    url:"/um/js",
                    type: "get",
                    dataType: "json",
                    success: function (json) {
                        $("#message").text(json.message);

                    }
                })
            })

        })
    </script>
</head>
<body>

<input type="button" id="btn" value="发起get请求">
<h1 id="message"></h1>
</body>
</html>

返回数据
比如访问 /re/6 6作为参数传入

@RestController
public class RequestController {
//    /re/1
    @PostMapping("/re/{rid}")
    public String a(@PathVariable("rid") int id){
        return "\"{\"message\":\"数据创建成功\",\"id\":"+id+"}";
    }
}

json序列化
导包

  <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-core</artifactId>
           <version>2.12.0</version>
       </dependency>
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
           <version>2.12.0</version>
       </dependency>
       <dependency>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-annotations</artifactId>
           <version>2.12.0</version>
       </dependency>

直接返回对象 浏览器 会直接用json格式输出

    @GetMapping("user")
    public User getUser(int id) {
        User u = new User();
        if (id == 1) {
            u.setName("lovelves");
            u.setCourse("ddheheh");
        } else {
            u.setName("helelo");
            u.setCourse("hehehe");

        }
        return u;
    }

在这里插入图片描述
还可以返回list 数据json化

 @GetMapping("users")
    public List<User> getUsers(){
        ArrayList users = new ArrayList<>();
        User a = new User();
        a.setName("hello");
        a.setBirthday(new Date());
        User b = new User();
        b.setName("lovleves");
        b.setBirthday(new Date());
        users.add(a);
        users.add(b);
        return users;
    }

返回日期数据的时候要在实体类中格式化 用jsonformat注解格式化

public class User {
    private String name;
    private String course;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date birthday;
    private List<Integer> purpose;
    private Card card = new Card();

返回效果
在这里插入图片描述
接受跨域请求 用CrossOrigin注解 修饰在类上

@RestController
@CrossOrigin(origins = {"www.baidu.com","www.aa.com"})
public class RequestController {

跨域全局配置
在application.xml中添加

    <mvc:cors>
        <mvc:mapping path="/re/*" allowed-origins="www.baidu.com,www.aa.com" max-age="3600"/>
    </mvc:cors>

拦截器
在这里插入图片描述
引入依赖

<dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>javax.servlet-api</artifactId>
           <version>4.0.1</version>
           <scope>provided</scope>
       </dependency>

拦截器

package com.lovelves.springmvc.converter;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Intercepter implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("pre");
        return true;
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
         System.out.println("now");
    }

    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("after");
    }
}

在application.xml

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="com.lovelves.springmvc.converter.Intercepter"/>
        </mvc:interceptor>
    </mvc:interceptors>

运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值