原创不易,转载请注明出处:springmvc rest风格的实例代码demo讲解
代码下载地址:http://www.zuidaima.com/share/1751863912057856.htm
Rest介绍
/blog / HTTP GET => 得到id = 1的blog / blog / HTTP DELETE => 删除 id = 1的blog / blog / HTTP PUT => 更新id = 1的blog / blog HTTP POST => 新增BLOG
以下详细解一下spring rest使用.
首先,我们带着如下两个问题查看本文。
1.如何在java构造没有扩展名的RESTful url,如 /forms/1,而不是 /forms/1.do
2.浏览器的form标签不支持提交delete,put请求,如何曲线解决
springmvc rest 实现
springmvc的resturl是通过@RequestMapping 及@PathVariable annotation提供的,
通过如@RequestMapping(value="/blog /{id}",method=RequestMethod.DELETE)即可处理/blog/1 的delete请求.
@RequestMapping(value=" /blog/{id} " ,method=RequestMethod.DELETE) public ModelAndView delete(@PathVariable Long id,HttpServletRequest request,HttpServletResponse response) }
@RequestMapping @PathVariable如果URL中带参数,则配合使用,如
@RequestMapping(value=" /blog/{blogId}/message/{msgId} " ,method=RequestMethod.DELETE) public ModelAndView delete(@PathVariable( " blogId " ) Long blogId,@PathVariable( " msgId " ) Long msgId,HttpServletRequest request,HttpServletResponse response) }
1.springmvc web.xml配置
<!-- 该servlet为tomcat,jetty等容器提供,将静态资源映射从/改为/static/目录,如原来访问 http://localhost/foo.css ,现在http://localhost/static/foo.css --> <servlet-mapping> <servlet-name> default </servlet-name> <url-pattern> /static/* </url-pattern> </servlet-mapping> <servlet> <servlet-name> springmvc </servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup> </load-on-startup> </servlet> <!-- URL重写filter,用于将访问静态资源http://localhost/foo.css 转为http://localhost/static/foo.css --> <filter> <filter-name> UrlRewriteFilter </filter-name> <filter-class> org.tuckey.web.filters.urlrewrite.UrlRewriteFilter </filter-class> <init-param> <param-name> confReloadCheckInterval </param-name> <param-value> </param-value> </init-param> <init-param> <param-name> logLevel </param-name> <param-value> DEBUG </param-value> </init-param> </filter> <filter-mapping> <filter-name> UrlRewriteFilter </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> <!-- 覆盖default servlet的/, springmvc servlet将处理原来处理静态资源的映射 --> <servlet-mapping> <servlet-name> springmvc </servlet-name> <url-pattern> / </url-pattern> </servlet-mapping> <!-- 浏览器不支持put,delete等method,由该filter将/blog?_method=delete转换为标准的http delete方法 --> <filter> <filter-name> HiddenHttpMethodFilter </filter-name> <filter-class> org.springframework.web.filter.HiddenHttpMethodFilter </filter-class> </filter> <filter-mapping> <filter-name> HiddenHttpMethodFilter </filter-name> <servlet-name> springmvc </servlet-name> </filter-mapping>
2.webapp/WEB-INF/springmvc-servlet.xml配置,使用如下两个class激活@RequestMapping annotation
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
3.Controller编写
/***/ */ @Controller @RequestMapping( " /userinfo " ) public class UserInfoController extends BaseSpringController }
/userinfo => index() /userinfo/new => _new() /userinfo/{id} => show() /userinfo/{id}/edit => edit() /userinfo POST => create() /userinfo/{id} PUT => update() /userinfo/{id} DELETE => delete() /userinfo DELETE => batchDelete()
注(不使用 /userinfo/add => add() 方法是由于add这个方法会被maxthon浏览器当做广告链接过滤掉,因为包含ad字符)
4.jsp 编写
<form:form action="${ctx}/userinfo${userInfo.userId}" method="put"> </form:form>
生成的html内容如下, 生成一个hidden的_method=put,并于web.xml中的HiddenHttpMethodFilter配合使用,在服务端将post请求改为put请求
<form id="userInfo" action="/springmvc_rest_demo/userinfo/2" method="post"> <input type="hidden" name="_method" value="put" /> </form>
另外一种方法是你可以使用ajax发送put,delete请求.
5.静态资源的URL重写
如上我们描述,现因为将default servlet映射至/static/的子目录,现我们访问静态资源将会带一个/static/前缀.
如 /foo.gif, 现在访问该文件将是 /static/foo.gif.
那如何避免这个前缀呢,那就是应用URL rewrite,现我们使用 http://tuckey.org/urlrewrite/, 重写规则如下
<urlrewrite> <!-- 访问jsp及jspx将不rewrite url,其它.js,.css,.gif等将重写,如 /foo.gif => /static/foo.gif --> <rule> <condition operator="notequal" next="and" type="request-uri">.*.jsp </condition> <condition operator="notequal" next="and" type="request-uri"> .*.jspx </condition> <from> ^(/.*\..*)$ </from> <to> /static$1 </to> </rule> </urlrewrite>
相关推荐
SpringMVC构建REST接口:第四篇 第一个REST风格的接口的源代码
SpringMVC文件上传Demo代码
比较完整的SpringMVC的demo,里面包含了对数据增删改查,上传下载文件的实现,异常处理,拦截器,国际化等等功能的实现
SpringMVC构建REST接口的源代码
springMVC spring mybatis rest风格架构 根据请求的后缀名 解析成json 或者 xml格式的数据
使用rest风格整合了 activiti 5.20 spring 4.15 mybatis 3.3.0 是初学者入门的好素材
SSM笔记-SpringMVC REST风格初识、RequestMapping/PathVariable/RequestParam/RequestHeader/CookieValue基本使用方法
SpringMVC 实例代码SpringMVC 实例代码SpringMVC 实例代码SpringMVC 实例代码SpringMVC 实例代码SpringMVC 实例代码SpringMVC 实例代码
SpringMVC的Restful风格Demo
SpringMVC 注解和非注解demo。有关注解方式和非注解方式的讲解和demo
springMvc整合hibernate Demo
本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)》一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并实现前后端分离,该项目体现了一个具有REST风格...
SpringMvc+Hibernate+MySql Demo 源码 SpringMvc+Hibernate+MySql Demo 源码
Shiro整合springMvc+Mybatis+Redis demo源码下载.zip Shiro整合springMvc+Mybatis+Redis demo源码下载.zip
SpringMVC+MyBatic demo Service端 后续上传客户端
springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo ...
springmvc中rest风格的增删改查,适合初学者参考
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...
自己在学习spring mvc和Angularjs时写的一个小例子,有兴趣的同学可以参考参考