zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JavaWeb学习(17):优化三层(加入接口和 DBUtil)
    [每日一题]:The Lazy Cow(silver)
    JavaWeb学习(16): 三层架构模式实现简单的学生管理系统(内含数据库)
    BZOJ3275Number——二分图最大权独立集
    BZOJ3438小M的作物——最小割
    BZOJ2127happiness——最小割
    BZOJ3894文理分科——最小割
    BZOJ2150部落战争——最小路径覆盖
    BZOJ4205卡牌配对——最大流+建图优化
    BZOJ4032[HEOI2015]最短不公共子串——序列自动机+后缀自动机+DP+贪心
  • 原文地址:https://www.cnblogs.com/nayitian/p/15370569.html
Copyright © 2011-2022 走看看