SpringMVC学习(十一)——SpringMVC实现Resultful服务
来源:互联网 发布:mingw apache 编辑:程序博客网 时间:2024/06/03 10:12
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>
在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="">
标签来对它进行映射访问了,如下:
- SpringMVC学习(十一)——SpringMVC实现Resultful服务
- SpringMVC学习(九)——SpringMVC中实现文件上传
- SpringMVC学习笔记(十一)
- SpringMVC实现RESTful服务
- springMVC教程中级(六)resultful与拦截器
- Sping 学习笔记7—— SpringMVC的restful 服务
- SpringMVC 学习笔记(十一) SpirngMVC运行流程
- 上传图片---SpringMVC学习笔记(十一)
- 上传图片---SpringMVC学习笔记(十一)
- springmvc——入门学习
- SpringMVC学习笔记——SpringMVC的简单应用
- springmvc学习笔记(31)——springmvc运行流程
- springmvc学习笔记(31)——spring整合springmvc
- SpringMVC学习(一)——SpringMVC介绍与入门
- SpringMVC学习(二)——SpringMVC架构及组件
- SpringMVC学习(三)——SpringMVC的配置文件
- SpringMVC学习(五)——SpringMVC的参数绑定
- SpringMVC学习(八)——SpringMVC中的异常处理器
- stringstream .str()
- C++作业5
- SpringMVC学习(十)——SpringMVC与前台的json数据交互
- 对象构造与初始化
- xUtils3.0框架学习笔记分享
- SpringMVC学习(十一)——SpringMVC实现Resultful服务
- 自使用移动端rem适配--并且vscode-px自动转化成rem
- 安卓资料整理
- Lynda.com使用体验
- 基于语法分析的公式分析器设计
- 多层循环方法状态的返回tip
- 'nmake' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- 卡诺图化简法详细介绍
- java如何追加写入txt文件