热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringMVC学习之RESTful风格post

RESTful不是一种技术,而是一种风格。下面这个是百度百科对这种风格的解释:一种软件架构风格,设计风格而不是标准,只是提供了一组设计

RESTful不是一种技术,而是一种风格。下面这个是百度百科对这种风格的解释:

     一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

我们来比较一下REST和非REST的区别,本文和上一篇的有很大的关联,可以先看上一篇文章把配置文件弄好和体验一下SpringMVC的好处。

这是我上一篇文章的路径:http://blog.csdn.net/qq_18895659/article/details/51824624

我们这篇和上一篇所有的配置文件一样都没有变。

好,我们继续回归本文

----非REST的url:

                 http://...../queryItems.action?id=001&type=T01

----REST的url风格:
                    http://..../items/001/T01

注意 @PathVariable 将 @RequestMapping 中value带的变量 此处是 {id}与方法中参数绑定 

注意:如果变量名称与方法参数名称不一致,则需要指定

REST缺点 : 跳转的时候浏览器不认post/get 之外的访问方法 ,而此处是DELETE

我们下面写一个例子来看一下当使用POST和使用DELETE时候的区别。配置文件和上篇的配置文件相同,这里就不贴出来了。

我们来看我的action类

@Controller  
@RequestMapping("/person")//注解为控制器指定可以处理哪些 URL 请求,跟struts2中的命名空间作用一样
public class PersonAction{

/**
* 使用@RequestParam注解指定参数的name
* 注解指定参数名称
*/
@RequestMapping(value="/delete/{id}/{name}",method=RequestMethod.DELETE)
    public String delete(@PathVariable Integer id,@PathVariable("name") String username){
        System.out.println(id + "   " + username) ;
        return "person";
    }


}
关于其中的一些参数这里也不再做解释了。

下面这是我的一个DELETE测试jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>







RESTful 风格 post







action="${pageContext.request.contextPath}/person/delete/1/haha"
我们可以看到url已经有变化了。我们可以从action里面找出端倪


  @RequestMapping(value="/delete/{id}/{name}",method=RequestMethod.DELETE)
而这种风格缺点也是跳转的时候浏览器不认post/get 之外的访问方法 ,而此处是DELETE,所以在点击测试delete按钮测试时页面转发会出现错误

但我们的值却可以传过去。可以看到我们页面的值成功传到后台了。

那我们用post方法呢,我们可以在上面的action类里面添加如下的方法。

    @RequestMapping(value="/method1",method=RequestMethod.POST)
    public String method1(Integer id,String name){
        System.out.println(id + "  ---    "+name);
        return "person";
    }
我们把jsp改为如下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>






RESTful 风格 post








注意修改这个隐参


我们可以来测试一下和DELETE有何不同。

由上面可以看到,转发成功了,传值也成功了。

通过上例可以发现,使用@RequestMapping(value="",.ethod=RequestMethod.POST)可以限制接收提交的方式,有利于规范代码。

好了,这就是springMVC的RESTful风格的使用,如有哪里错误,请大神指出。



推荐阅读
  • 优雅地记录API调用时长
    本文旨在探讨如何高效且优雅地记录API接口的调用时长,通过实际案例和代码示例,帮助开发者理解并实施这一技术,提高系统的可观测性和调试效率。 ... [详细]
  • 本文详细介绍了Spring AOP注解的基本概念及其实现方式,并通过实例演示了如何在项目中使用这些注解进行面向切面的编程。旨在帮助开发者更好地理解和运用Spring AOP功能。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • SpringBoot底层注解用法及原理
    2.1、组件添加1、Configuration基本使用Full模式与Lite模式示例最佳实战配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断配置类组 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • 本文旨在探讨如何撰写高效且全面的工作总结,特别是针对数据库管理、Java编程及Spring框架的学习与应用。文章通过实例分析,帮助读者掌握工作总结的写作技巧,提高个人工作汇报的质量。 ... [详细]
  • 本文探讨了Web API 2中特性的路由机制,特别是如何利用它来构建RESTful风格的URI。文章不仅介绍了基本的特性路由使用方法,还详细说明了如何通过特性路由进行API版本控制、HTTP方法的指定、路由前缀的应用以及路由约束的设置。 ... [详细]
  • 本文介绍了JSP的基本概念、常用标签及其功能,并通过示例详细说明了如何在JSP页面中使用Java代码。 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 本文探讨了Java中有效停止线程的多种方法,包括使用标志位、中断机制及处理阻塞I/O操作等,旨在帮助开发者避免使用已废弃的危险方法,确保线程安全和程序稳定性。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 我在尝试将组合框转换为具有自动完成功能时遇到了一个问题,即页面上的列表框也被转换成了自动完成下拉框,而不是保持原有的多选列表框形式。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • Beetl是一款先进的Java模板引擎,以其丰富的功能、直观的语法、卓越的性能和易于维护的特点著称。它不仅适用于高响应需求的大型网站,也适合功能复杂的CMS管理系统,提供了一种全新的模板开发体验。 ... [详细]
author-avatar
手机用户2602907295
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有