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/>
大部分情况下第二种就可以解决问题,而且方便简单
springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)的更多相关文章
- Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...
- springMVC数据验证出现404错误解决办法
今天使用springMVC的数据验证的时候,看似很简单的东西,却有一个很大的陷阱:提交空表单的时候总是出现404错误,但是后台却不给你报任何错.遇到这个错误这个很苦恼,搞了几小时,今天记录并分享一下解 ...
- 详解get请求和post请求参数中文乱码的解决办法
首先出现中文乱码的原因是tomcat默认的编码方式是"ISO-8859-1",这种编码方式以单个字节作为一个字符,而汉字是以两个字节表示一个字符的. 一,get请求参数中文乱码的解 ...
- javaCV开发详解之12:视频转apng动态图片实现,支持透明通道,也支持摄像机、桌面屏幕、流媒体等视频源转apng动态图
wjavaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG. ...
- ****基于H5的微信支付开发详解[转]
这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...
- PayPal 开发详解(七):运行REST API SAMPLE
1.编译成功,修改配置文件 sdk_config.properties ,使用我们申请的测试帐号执行收款测试,clientId 和 clientSecret 参见 PayPal 开发详解(五) 2.将 ...
- iOS应用开发详解
<iOS应用开发详解> 基本信息 作者: 郭宏志 出版社:电子工业出版社 ISBN:9787121207075 上架时间:2013-6-28 出版日期:2013 年7月 开本:16开 ...
- javaCV开发详解之技术杂烩:javaCV能帮我们做什么?能实现什么功能?ffmpeg和openCV能实现功能,javaCV如何做到更快、更简单的实现相应的功能?等等一堆实用话题
前言: 该篇文章旨在帮助刚接触javaCV的盆友系统的认识音视频.javaCV.图像处理相关的体系知识和一些实用的知识. 序: javaCV早期因为内置了openCV库,所以常用来做图像识别应用,现在 ...
- javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
随机推荐
- configure: error: Cannot find php-config. Please use --with-php-config=PATH 错误的解决方案
一般出现这个错误说明你执行 ./configure 时 --with-php-config 这个参数配置路径错误导致的. 修改为: ./configure --with-php-config=/us ...
- Java Comparator的范型类型推导问题
问题 在项目中,有一处地方需要对日期区间进行排序 我需要以日期区间的开始日为第一优先级,结束日为第二优先级进行排序 代码 我当时写的代码如下: List<Pair<LocalDate, L ...
- 大话PROFINET
1.PROFINET是什么? PROFINET的全称是Process Field Net,是由PROFIBUS国际组织PI(PROFIBUS International)推的出,在IEC61158标准 ...
- xmlplus 组件设计系列之五 - 选项卡
这一章将设计一个选项卡组件,选项卡组件在手持设备上用的比较多,下面是一个示意图: 选项卡组件的分解 在具体实现之前,想像一下目标组件是如何使用的,对于设计会有莫大的帮助.通过观察,可以将选项卡组件分为 ...
- 用Visual Studio2017写静态库
造轮子是一件有趣的事情,VS是一个强大的工具,能胜任超大规模的工程,但是讲真,对不那么大的项目配置起来不是那么友好(网上的其他教程也一点都不友好Orz).这里就展示一下构建一个简单的静态库的正确姿势. ...
- css3 transition 和 animation实现走马灯
这段时间在做一个App,H5的开发.页面上有公告 以走马灯的形式显示出来. 在开始直接用的marquee标签,后来发现在ios客户端,走马灯移动不够平滑,有抖动现象. 对于有强迫症的我而言是无法忍受的 ...
- 蓝桥杯-加法变乘法-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- 基于jqUI的日期选择(‘yy-mm-dd’)
今天看某公司的网页,其中有个筛选条件是选择一个时间区间,从而选择出符合条件的项.什么也不说了,先看图左边的输入框,点击具体的日期,这里我选择的是2017-3-9,然后右边的输入框就只能选择这个日期以后 ...
- luogu P1015 回文数
题目描述: 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制 ...
- 最准确的单点登录SSO图示和讲解(有代码范例)|手把手教做单点登录(SSO)系列之二
写第一篇博客<手把手教做单点登录(SSO)系列之一:概述与示例>,就获得了园子里朋友们热情的评论和推荐,感谢各位. 我那篇文章同时发了CSDN和博客园.对比一下,更感受到博客园童鞋们的技术 ...