@RestController注解


作用:相当于@Controller+@Responsebody,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面

 

博客参考:https://www.cnblogs.com/clwydjgs/p/9255046.html

 

补充:前后端数据交互形式(以Get方式为例

  1、不携带参数:

@Controller
@RequestMapping("/user")
public class UserController {


    /**
     * 无参数请求
     * @param request
     * @return
     */
    //http://localhost:8080/user/
    @ResponseBody
    @RequestMapping(produces = "text/plain;charset=UTF-8")
    public String user(HttpServletRequest request){
        //url:http://localhost:8080/usercan access!
        return "url:"+request.getRequestURL()+" can access!";
    }
}

  2、将参数嵌套在路径中:使用@PathVariable获取值

@Controller
@RequestMapping("/user")
public class UserController {
    /**
     * 参数嵌套在请求路径中
     * @param str
     * @param request
     * @return
     */
    //http://localhost:8080/user/user2/%E6%9D%A8%E6%B6%A6%E6%98%A5
    @ResponseBody
    @RequestMapping(value = "/user2/{str}",produces = "text/plain;charset=UTF-8")
    public String pathVar(@PathVariable String str,HttpServletRequest request){
        //url:http://localhost:8080/user/user2/%E6%9D%A8%E6%B6%A6%E6%98%A5can access,str is杨润春
        return "url:"+request.getRequestURL()+" can access,str is"+str;
    }
    
}

  3、参数以key=value形式存在于请求路径中,控制器中的方法自动进行解析。包括单一变量和Bean对象

 /**
     * url单独携带参数
     * @param id
     * @param request
     * @return
     */
    //http://localhost:8080/user/rp?id=10000
    @ResponseBody
    @RequestMapping(value = "/rp",produces = "text/plain;charset=UTF-8")
    public String requestParam(long id,HttpServletRequest request){
        //url:http://localhost:8080/user/rpcan access,userID is10000
        return "url:"+request.getRequestURL()+"can access,userID is"+id;
    }

    /**
     * 接收key=value键值对,自动封装为object,然后再转换为字符串类型的json返回
     * @param user
     * @param request
     * @return
     */
    //http://localhost:8080/user/json?name=%E6%9D%A8%E6%B6%A6%E6%98%A5&password=123456
    @ResponseBody
    @RequestMapping(value = "/json",produces = "application/json;charset=UTF-8")
    public String passObj(UserBean user,HttpServletRequest request){
        Gson gson = new Gson();
        //{"name":"杨润春","password":"123456"}
        return gson.toJson(user);
    }

  4、后端返回数据:使用@RequestMapping中的属性 produces 指定返回的格式。

    (1)produces= "text/plain;charset=UTF-8":返回文本格式

    (2)produces = "application/json;charset=UTF-8":返回json格式

    (3)produces = "application/xml;charset=UTF-8":返回xml格式

 

/**
* url单独携带参数
* @param id
* @param request
* @return
*/
//http://localhost:8080/user/rp?id=10000
@ResponseBody
@RequestMapping(value = "/rp",produces = "text/plain;charset=UTF-8")
public String requestParam(long id,HttpServletRequest request){
//url:http://localhost:8080/user/rpcan access,userID is10000
return "url:"+request.getRequestURL()+"can access,userID is"+id;
}

/**
* 接收key=value键值对,自动封装为object,然后再转换为字符串类型的json返回
* @param user
* @param request
* @return
*/
//http://localhost:8080/user/json?name=%E6%9D%A8%E6%B6%A6%E6%98%A5&password=123456
@ResponseBody
@RequestMapping(value = "/json",produces = "application/json;charset=UTF-8")
public String passObj(UserBean user,HttpServletRequest request){
Gson gson = new Gson();
//{"name":"杨润春","password":"123456"}
return gson.toJson(user);
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM