SpringMVC_04异步调用、拦截器和异常处理

本文介绍了SpringMVC中的跨域访问解决方案,包括使用@CrossOrigin注解进行配置。深入探讨了异步调用,讲解了如何处理不同类型参数并返回JSON数据。接着,讨论了拦截器Interceptor的原理、作用,以及如何自定义拦截器。最后,讨论了SpringMVC的异常处理,包括使用HandlerExceptionResolver接口和@ControllerAdvice注解进行分类异常管理,以及自定义异常的定义和触发。
摘要由CSDN通过智能技术生成

SpringMVC_04跨域访问、异步调用、拦截器和异常处理

跨域访问
  • 定义:通过域名a下的操作访问域名b的资源(会出现无法访问的现象)

  • @CrossOrigin注解

    标注在处理器方法上方表示该方法支持跨域访问
    标注在处理器类上方表示该处理器类中的所有处理器方法均支持跨域访问

  • 为当前主机添加备用域名:修改windows安装目录下的host文件,添加( ip 域名)

异步调用
  • 形参注解@RequestBody:将异步提交数据组织成标注请求参数格式,赋值给形参

  • 处理简单参数

    //为id="testAjax"的组件绑定点击事件
    $("#testAjax").click(function(){
         
        //发送异步调用
        $.ajax({
         
            //请求方式:POST请求
            type:"POST",
            //请求的地址
            url:"ajaxController",
            //请求参数(也就是请求内容)
            data:'ajax message',
            //响应正文类型
            dataType:"text",
            //请求正文的MIME类型
            contentType:"application/text",
        });
    });
    
    @RequestMapping("/ajaxController")
    //使用@RequestBody注解,可以将请求体内容封装到指定参数中
    public String ajaxController(@RequestBody String message){
         
        System.out.println("ajax request is running..."+message);
        return "page.jsp";
    }
    
  • 处理POJO类型参数

    //为id="testAjaxPojo"的组件绑定点击事件
    $("#testAjaxPojo").click(function(){
         
        $.ajax({
         
            type:"POST",
            url:"ajaxPojoToController",
            data:'{"name":"Jock","age":39}',
            dataType:"text",
            contentType:"application/json",
        });
    });
    
    @RequestMapping("/ajaxPojoToController")
    //如果处理参数是POJO,且页面发送的请求数据格式与POJO中的属性对应,@RequestBody注解可以自动映射对应请求数据到POJO中
    //注意:POJO中的属性如果请求数据中没有,属性值为null,POJO中没有的属性如果请求数据中有,不进行映射
    public String  ajaxPojoToController(@RequestBody User user){
         
        System.out.println("controller pojo :"+user);
        return "page.jsp";
    }
    
  • 参数是封装了POJO的List集合

    //为id="testAjaxList"的组件绑定点击事件
    $("#testAjaxList").click(function(){
         
        $.ajax({
         
            type:"POST",
            url:"ajaxListToController",
            data:'[{"name":"Jock","age":39},{"name":"Jockme","age":40}]',
            dataType:"text",
            contentType:"application/json",
        });
    });
    
    @RequestMapping("/ajaxListToController")
    //如果
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值