原创不易,转载请注明出处: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 demo 完整源码实例下载.zip"压缩包中,我们可以深入学习和理解SpringMVC的各种核心特性和实际应用。 首先,SpringMVC通过DispatcherServlet作为前端控制器,它负责接收HTTP请求,并根据请求的URL...
在本项目"activiti+springMVC+mybatis rest风格整合demo"中,开发者通过集成Activiti、Spring MVC和MyBatis三个核心组件,构建了一个基于RESTful API的工作流管理系统。这个项目对于初学者来说是一个很好的学习资源...
总的来说,"spring+springmvc+rabbitmq实例代码"展示了如何将Spring的Web开发能力与RabbitMQ的分布式消息传递能力相结合,以构建高可扩展性和解耦的系统。在实际项目中,这种集成可以帮助我们构建更健壮、响应更快的...
本源代码示例将展示如何使用SpringMVC构建REST接口。在实际开发中,我们通常会遵循以下步骤: 1. **配置SpringMVC**: - 首先,在`web.xml`中配置SpringMVC的核心DispatcherServlet,它负责处理HTTP请求并分发到...
这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们需要在SpringMVC的配置文件(如`servlet-context.xml`)中启用多部分支持。这通常涉及到注册一个`...
在"SpringMVC+Mybatis demo"中,MyBatis与Spring结合,通过Spring的SqlSessionFactoryBean创建SqlSessionFactory,进一步生成SqlSession实例。Mapper接口的实现通常会使用`@Mapper`注解,这样Spring能够自动扫描并...
通过这个"SpringMVC 增删改查demo",我们可以深入理解SpringMVC的工作原理以及如何与数据库交互。 首先,SpringMVC的核心组件包括DispatcherServlet、ModelAndView、Controller、HandlerMapping和ViewResolver等。...
本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)》一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并实现前后端分离,该项目体现了一个具有REST风格...
【标题】"SpringMVC+MyBatis+EasyUI Demo" 在现代Web开发中,集成框架的使用大大简化了开发过程,提高了效率。本项目基于SpringMVC、MyBatis和EasyUI,构建了一个功能丰富的演示系统。这些技术都是Java生态中的热门...
在本文中,我们将深入探讨如何将SpringMVC与jdbcTemplate集成,同时利用Druid作为连接池,实现一个基于REST风格的简单CRUD应用。我们将主要关注以下知识点: 1. **SpringMVC框架**:SpringMVC是Spring框架的一个...
**SpringMVC REST风格详解** REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,用于设计网络应用程序,特别是在Web服务中广泛采用。在SpringMVC框架中,实现REST风格的接口可以让我们...
开发者可以通过这个实例学习如何配置SpringMVC和Hibernate,理解它们之间的协作方式,以及如何编写实际的业务代码。 在这个实例中,你可以学习到以下知识点: 1. SpringMVC的配置,包括DispatcherServlet配置、视图...
在这个"SpringMVC demo 完整源码实例下载"中,我们能够深入理解并学习SpringMVC的核心概念和实际应用。 首先,SpringMVC是Spring框架的一部分,它通过Model-View-Controller(MVC)设计模式来分离应用程序的业务...
在"Ext4+SpringMVC实例Demo源码"中,我们可以期待看到如何将这两个技术结合,创建一个具有交互性和数据管理功能的Web应用。这个Demo可能包含了以下关键知识点: 1. **Ext4组件使用**:Ext4提供了一系列的UI组件,如...
springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo springmvc 环境搭建 demo ...
本资源"**T4模版生成SpringMVC构造REST代码源代码**"正是针对这一需求,提供了使用T4模板自动化创建SpringMVC应用中RESTful接口的解决方案。 首先,让我们深入理解**T4模板**。T4(Text Template Transformation ...
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...
这个 "springMvc+hibernate Demo" 压缩包文件很可能是为了展示如何将这两个框架整合在一起,创建一个完整的数据驱动的 Web 应用。 **Spring MVC 框架** Spring MVC 是 Spring 框架的一部分,设计用于构建可维护、松...
【maven+SpringMvc+mybatis实例】是一个适合初学者的综合项目,它结合了三个重要的Java开发技术:Maven、SpringMVC和MyBatis。这个实例将帮助你理解如何构建一个完整的Java Web应用程序,从依赖管理到业务逻辑处理。...