Spring MVC,RESTful支持

关于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

posted @ 2021-10-06 10:13  那些年的事儿  阅读(51)  评论(0编辑  收藏  举报