• springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)


    一、什么是REST?

    符合REST约束风格和原则的应用程序或者设计就是REST
    例如:
    /blog/1   HTTP GET    =>查询id=1的blog
    /blog/1   HTTP DELETE =>删除id=1的blog
    /blog/1   HTTP PUT    =>更新blog
    /blog/add HTTP POST  =>新增blog


    二、SpringMVC对REST应用提供了以下支持

    1、利用@RequestMapping指定要处理请求的URI模板和HTTP请求的动作类型。

    1.1、@RequestMapping应用

    @RequestMapping可以定义在Controller类前和处理方法前,主要用于指定Controller的方法处理那些请求


    1.2、在REST应用中,@RequestMapping可以采用以下使用格式:

    (1)@RequestMapping(value="/emp/{id}",method=RequestMethod.GET)

    (2)@RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE)

    (3)@RequestMapping(value="/emp/{id}",method=RequestMethod.PUT)

    (4)@RequestMapping(value="/emp/add",method=RequestMethod.POST)


    2、利用@PathVariable将URI模板中的变量映射到处理方法的参数上

    2.1、@PathVariable应用

    @PathVariable作用是将URI请求模板中的变量解析出来,映射到处理方法的参数上

    2.2、@PathVariable使用示例

    @RequestMapping(value="/appName/{name}",method=RequestMethod.GET)
    public String execute(@PathVariable("name")int name)
    return name;
    }

    2.3、URL请求匹配

    比如上述的例子可以这样访问:http://www.eguid.cn/appName/参数

    参数对应的就是name的值。


    3、利用Ajax,在客户端发出PUT、POST、GET和DELETE请求

    客户端发送PUT、POST、GET和DELETE请求

    采用Ajax方式发送PUT、POST、GET和DELETE
    $.ajax({
    type:"PUT",//这里的参数可以是PUT、POST、GET和DELETE
    url:"/appName/name",//请求地址,name就是你的参数
    data:JSON.stringify($("#myform").serializaObject()),
    dataType:"json",
    contentYype:"application/json",//这个一定要设置
    success:function(data){
    //这里是成功获取信息后的处理方法
    }

    });


    重要的补充:

    data:JSON.stringify($("#myform").serializaObject())

    $("#myform").serializaObject()是通过jquery直接将form表单生成json对象;

    JSON.stringify()是把json对象转成json字符串的操作;

    再次补充:spring4.x支持json对象解析,如果使用spring4.x,这里直接写$("#myform").serializaObject()就可以了,不需要再转成字符串。

    后端spring可以直接通过实体类就可以自动解析json

    4、静态资源访问处理

    采用RESTful架构后,必须将web.xml中控制器拦截的请求设置为 ‘ ’ ;但是这样会产生一个问题,就是会将css,js,图片等静态资源拦截,发生404错误。


    解决方案如下:

    1、配置<mvc:resources/>

    springMVC配置文件中这样使用:

    <mvc:resources mapping="请求URI" location="资源位置";


    2、在springMVC配置文件中使用<mvc:default-servlet-handler/>

    配置该指令放行默认的静态资源:

    <mvc:default-servlet-handler/>


    大部分情况下第二种就可以解决问题,而且方便简单

  • 相关阅读:
    npm version patch
    nginx 操作
    基于 Vue CLI 组件库封装,按需加载实现
    nginx 配置文件路径获取
    Laravel 生产资源路由并指定模型
    base.js,通用js方法,Js方法封装
    jquery.params.js,Jquery获取页面参数,js获取页面参数
    layui使用,LayUI select不显示,LayUI文件上传,Layui自定义校验规则
    Layer弹窗消息封装,Layer消息提示封装,Layer使用
    Html跨域js封装,前端页面跨域js,postMessage实现跨域
  • 原文地址:https://www.cnblogs.com/eguid/p/6821625.html
Copyright © 2020-2023  润新知