@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