`
yaerfeng1989
  • 浏览: 230991 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

springmvc rest风格的实例代码demo讲解

阅读更多

原创不易,转载请注明出处: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>

 

1
0
分享到:
评论

相关推荐

    SpringMVC demo 完整源码实例下载.zip

    在这个"SpringMVC demo 完整源码实例下载.zip"压缩包中,我们可以深入学习和理解SpringMVC的各种核心特性和实际应用。 首先,SpringMVC通过DispatcherServlet作为前端控制器,它负责接收HTTP请求,并根据请求的URL...

    activiti+springMVC+mybatis rest风格整合demo

    在本项目"activiti+springMVC+mybatis rest风格整合demo"中,开发者通过集成Activiti、Spring MVC和MyBatis三个核心组件,构建了一个基于RESTful API的工作流管理系统。这个项目对于初学者来说是一个很好的学习资源...

    spring+springmvc+rabbitmq实例代码

    总的来说,"spring+springmvc+rabbitmq实例代码"展示了如何将Spring的Web开发能力与RabbitMQ的分布式消息传递能力相结合,以构建高可扩展性和解耦的系统。在实际项目中,这种集成可以帮助我们构建更健壮、响应更快的...

    SpringMVC构建REST接口的源代码

    本源代码示例将展示如何使用SpringMVC构建REST接口。在实际开发中,我们通常会遵循以下步骤: 1. **配置SpringMVC**: - 首先,在`web.xml`中配置SpringMVC的核心DispatcherServlet,它负责处理HTTP请求并分发到...

    SpringMVC文件上传Demo代码

    这个"SpringMVC文件上传Demo代码"是一个实例,演示了如何配置和使用SpringMVC来实现这一功能。 首先,我们需要在SpringMVC的配置文件(如`servlet-context.xml`)中启用多部分支持。这通常涉及到注册一个`...

    SpringMVC+Mybatis demo

    在"SpringMVC+Mybatis demo"中,MyBatis与Spring结合,通过Spring的SqlSessionFactoryBean创建SqlSessionFactory,进一步生成SqlSession实例。Mapper接口的实现通常会使用`@Mapper`注解,这样Spring能够自动扫描并...

    SpringMVC 增删改查demo

    通过这个"SpringMVC 增删改查demo",我们可以深入理解SpringMVC的工作原理以及如何与数据库交互。 首先,SpringMVC的核心组件包括DispatcherServlet、ModelAndView、Controller、HandlerMapping和ViewResolver等。...

    Maven整合rest+SpringMvc实例

    本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)》一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并实现前后端分离,该项目体现了一个具有REST风格...

    springmvc+mybatis+easyui demo

    【标题】"SpringMVC+MyBatis+EasyUI Demo" 在现代Web开发中,集成框架的使用大大简化了开发过程,提高了效率。本项目基于SpringMVC、MyBatis和EasyUI,构建了一个功能丰富的演示系统。这些技术都是Java生态中的热门...

    SpringMVC整合jdbcTemplate实例

    在本文中,我们将深入探讨如何将SpringMVC与jdbcTemplate集成,同时利用Druid作为连接池,实现一个基于REST风格的简单CRUD应用。我们将主要关注以下知识点: 1. **SpringMVC框架**:SpringMVC是Spring框架的一个...

    SSM笔记-SpringMVC REST风格、基本标签初识

    **SpringMVC REST风格详解** REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,用于设计网络应用程序,特别是在Web服务中广泛采用。在SpringMVC框架中,实现REST风格的接口可以让我们...

    SpringMVC+hibernate实例

    开发者可以通过这个实例学习如何配置SpringMVC和Hibernate,理解它们之间的协作方式,以及如何编写实际的业务代码。 在这个实例中,你可以学习到以下知识点: 1. SpringMVC的配置,包括DispatcherServlet配置、视图...

    Ext4+SpringMVC实例Demo源码

    在"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 springmvc 环境搭建 demo ...

    T4模版生成SpringMVC构造REST代码源代码

    本资源"**T4模版生成SpringMVC构造REST代码源代码**"正是针对这一需求,提供了使用T4模板自动化创建SpringMVC应用中RESTful接口的解决方案。 首先,让我们深入理解**T4模板**。T4(Text Template Transformation ...

    SpringMVC demo 完整源码实例下载

    在这个"SpringMVC demo 完整源码实例下载"中,我们能够深入理解并学习SpringMVC的核心概念和实际应用。 首先,SpringMVC是Spring框架的一部分,它通过Model-View-Controller(MVC)设计模式来分离应用程序的业务...

    springmvc demo

    Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发...

    springMvc+hibernate Demo

    这个 "springMvc+hibernate Demo" 压缩包文件很可能是为了展示如何将这两个框架整合在一起,创建一个完整的数据驱动的 Web 应用。 **Spring MVC 框架** Spring MVC 是 Spring 框架的一部分,设计用于构建可维护、松...

    maven+SpringMvc+mybatis实例

    【maven+SpringMvc+mybatis实例】是一个适合初学者的综合项目,它结合了三个重要的Java开发技术:Maven、SpringMVC和MyBatis。这个实例将帮助你理解如何构建一个完整的Java Web应用程序,从依赖管理到业务逻辑处理。...

Global site tag (gtag.js) - Google Analytics