热门标签 | 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风格的使用,如有哪里错误,请大神指出。



推荐阅读
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
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社区 版权所有