http://blog.csdn.net/yerenyuan_pku/article/details/72514034

Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格,是对http协议的诠释。

  • 资源定位:互联网所有的事物都是资源,要求url中没有动词,只有名词,没有参数。url请求的风格就像这样:

    http://blog.csdn.net/eson_15/article/details/51743514
  • 资源操作:使用put、delete、post、get等不同方法对资源进行操作,分别对应添加、删除、修改、查询。一般使用时还是post和get,put和delete几乎不使用。

现在有这样一个需求:使用RESTful方式实现商品信息查询。有需求,就要解决需求。我们可将ItemController类中的editItem方法改造为:

@RequestMapping("/itemEdit/{id}")
// 如果id和方法的形参一致,@PathVariable注解中可以不写内容
public String editItem(@PathVariable("id") Integer iid, Model model) { // 调用服务 Items items = itemService.getItemById(iid); // 把数据传递给页面,需要用到Model接口 model.addAttribute("item", items); // 返回逻辑视图 return "editItem"; }

@RequestMapping(value="/itemEdit/{id}"):{×××}表示占位符,请求的URL可以是“/itemEdit/1”或“/itemEdit/2”,通过在方法中使用@PathVariable获取{×××}中的×××变量。@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。如果@RequestMapping中表示为”/viewItems/{id}”,id和形参名称一致,那么@PathVariable就不用指定名称。 
除此之外,还要在前端控制器中针对REST进行配置,即将web.xml文件中的前端控制器配置改造为:

<!-- 配置前端控制器 -->
<servlet><servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- 指定springmvc配置文件的路径。如果不指定,默认为:/WEB-INF/${servlet-name}-servlet.xml --> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- /:拦截所有请求,不包括jsp。/*:拦截所有请求,包括jsp,应该配置"/" --> <url-pattern>/</url-pattern> </servlet-mapping>
  • 1

在SpingMVC框架中,/即表示拦截所有请求,但不拦截jsp,/*即表示所有的都拦截,包括jsp。这里显然应该配置/,因为你想啊!假如说Controller类方法里面已经把数据处理完了,要跳转到jsp页面,如果你配置的是/*,这个jsp页面的跳转也会被拦截,就会报404错误。 
为了便于测试,将itemList.jsp中的修改超链接改造为:

<td><a href="${pageContext.request.contextPath }/item/itemEdit/${item.id}">修改</a></td>


最后的一个测试效果为: 

但是有个问题,使用上面的配置后会拦截所有的url(虽说不包括jsp),那么对静态资源也会拦截,所以DispatcherServlet也会解析静态资源,但是这样的话就会出错,所以我们要设置一下不让它解析静态资源。SpringMVC的<mvc:resources mapping="" location="">标签可实现对静态资源进行映射访问。如下是对js文件的访问配置:

<mvc:resources location="/js/" mapping="/js/**"/>


如果说我们把js文件夹放到工程的WEB-INF目录下,照理来说外界肯定是无法访问到的,但是我们非得访问呢?这时就可通过<mvc:resources mapping="" location="">标签来对它进行映射访问了,如下: 

0

转载于:https://www.cnblogs.com/telwanggs/p/6943752.html

(转)SpringMVC学习(十一)——SpringMVC实现Resultful服务相关推荐

  1. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)--SpringMVC介绍与入门这篇文章后 ...

  2. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  3. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  4. (转)SpringMVC学习(五)——SpringMVC的参数绑定

    http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...

  5. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?    这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来 ...

  6. SpringMVC学习——对于SpringMVC的整体认识

    文章目录 一.首先什么是SpringMVC? 二.同类的技术有哪些? 三.对比同类的优缺点是哪些? 四.SpringMVC的组成部分? 五.SpringMVC项目的架构图 一.首先什么是SpringM ...

  7. springMVC学习(7)-springMVC校验

    一.校验理解: 对于安全要求较高点建议在服务端进行校验. 控制层conroller:校验页面请求的参数的合法性.在服务端控制层conroller校验,不区分客户端类型(浏览器.手机客户端.远程调用) ...

  8. (转)SpringMVC学习(二)——SpringMVC架构及组件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231385 相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上 ...

  9. (转)SpringMVC学习(十)——SpringMVC与前台的json数据交互

    http://blog.csdn.net/yerenyuan_pku/article/details/72514022 json数据格式在接口调用中.html页面中比较常用,json格式比较简单,解析 ...

最新文章

  1. linux下db2创建批量存储过程,DB2批量执行SQL脚本以及存储过程的实现
  2. Liunx 安装mysql 5.6.16
  3. c free语言自定义函数,C 语言free函数的工作原理
  4. python分句_Python循环中的分句,继续和其他子句
  5. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示...
  6. php 面试靠快速排序,搞定PHP面试 - 常见排序算法及PHP实现
  7. 软件测试技术第一次试验之——JUnit的安装与使用
  8. Linux shell脚本中如何读取跟shell脚本同一目录下的配置文件
  9. 自然水体辐射特性与数值模拟 pdf_自然科学基金|水下消油剂处理对海底溢油输移扩散的影响实验及数值模拟研究...
  10. poj 2516(最小费用最大流)
  11. win8虚拟机_VMware15虚拟机软件安装包+安装教程
  12. 【4G通讯模组相关】 TCPIP连接本地电脑测试 、内网穿透
  13. Android调试萤石云摄像头时,出现400036错误
  14. 金融分析与风险管理——投资组合收益率、波动率计算
  15. QTableWidget获取一行数据
  16. 学 C++ ,能不能简单点?
  17. 〖Python自动化办公篇①〗- 文件自动化管理引言及shutil模块实现文件与文件内容的复制
  18. Oracle数据库:sql语言结构,数据查询语言DQL,select * from table;算术,别名,连接,去重等操作
  19. 【iOS开发】从小白到低水平开发者进厂实习自救指南
  20. 2018艾耕科技笔试题

热门文章

  1. ReplicaStateMachine分析
  2. (66)SPI外设驱动发送驱动(五)(第14天)
  3. (21)FPGA资源共享
  4. linux sort多磁盘排序,linux shell sort多字段排序
  5. 【C语言】找到兼职了心情紧张!
  6. 2d Laser 和 camera 标定工具原理及使用方法
  7. Python问题记录
  8. mysql索引的创建及删除
  9. 【力扣】NO.13.罗马数字转整数
  10. JAVA反射-面试题