关于RESTful的介绍,请参考:RESTful 架构详解(转载),本文引用自:《Java EE企业级应用开发教程》,应用案例:用户信息查询
假定你已经具备开发环境,读过前几篇文章,具体请参考:Spring MVC,绑定默认数据
一、控制器类UserController中,编写用户查询方法selectUser
package com.itheima.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.itheima.po.User; @Controller public class UserController { /** *接收RESTful风格的请求,其接收方式为GET */ @RequestMapping(value="/user/{id}",method=RequestMethod.GET) @ResponseBody public User selectUser(@PathVariable("id") String id){ //查看数据接收 System.out.println("id="+id); User user=new User(); //模拟根据id查询出到用户对象数据 if(id.equals("1234")){ user.setUsername("tom"); } //返回JSON格式的数据 return user; } }
在上述代码中,@RequestMapping(value="/user/{id}",method=RequestMethod.GET)注解用于匹配请求路径(包括参数)和方式。其中value="/user/{id}"表示可以匹配"/user/{id}"结尾的请求,id为动态参数;method=RequestMethod.GET表示只接收GET方式的请求。
方法中的@PathVariable("id")注解则用于接收并绑定请求参数,它可以将请求URL中的变量映射到方法的形参上。如果请求路径为/user/{id}",即请求参数中的id和方法形参名称id一样,则@PathVariable后面的("id") 可以省略。
二、在WebContent的mvc子目录下,新建restful.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>RESTful测试</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-1.11.3.min.js"> </script> <script type="text/javascript"> function search(){ // 获取输入的查询编号 var id = $("#number").val(); $.ajax({ url : "${pageContext.request.contextPath }/user/"+id, type : "GET", //定义回调响应的数据格式为JSON字符串,该属性可以省略 dataType : "json", //成功响应的结果 success : function(data){ if(data.username != null){ alert("您查询的用户是:"+data.username); }else{ alert("没有找到id为:"+id+"的用户!"); } } }); } </script> </head> <body> <form> 编号:<input type="text" name="number" id="number"> <input type="button" value="搜索" onclick="search()" /> </form> </body> </html>
注意:JSP在请求路径中使用了RESTful风格的URL,并且定义请求方式为GET。
三、发布项目,测试,打开网页:http://localhost:8080/ssm/mvc/restful.jsp
输入1234,提交,浏览器会弹出信息窗口:
如果你使用的是FireFox浏览器,按F12,选择网络,选择GET方法,页面会显示网址,如下图,正是:http://localhost:8080/ssm/user/1234