【问题标题】:Spring: How can I get value from uri?Spring:如何从 uri 中获取价值?
【发布时间】:2019-05-18 09:08:00
【问题描述】:

callbackFacebook函数如何从uri中获取code的值?

uri = http://localhost:8081/callback?code=AQDNm6hezKdTsId5k4oXKNo

@RequestMapping(value = "/callback?{code}", method = RequestMethod.GET)

public String callbackFacebook(Model model, @PathVariable(name = "code") String code) {

    System.out.println(code);
    return "login";
}

【问题讨论】:

标签: spring-boot


【解决方案1】:

试试这个。 code 是一个 查询参数,由您的 URL 判断,而不是路径变量。路径变量是路径本身的一部分(即,如果您的 URL 类似于 /{code}/callback,那么代码就是 PathVariable)。

@RequestMapping(value = "/callback", method = RequestMethod.GET)
public String callbackFacebook(Model model, @RequestParam(value = "code") String code) {
        System.out.println(code);
        return "login";
}

【讨论】:

    【解决方案2】:

    如果你的 URL 是 http://localhost:8081/callback?code=AQDNm6hezKdTsId5k4oXKNo 那么是请求参数的情况,所以方法如下。

    @RequestMapping(value = "/callback", method = RequestMethod.GET)
    public String callbackFacebook(Model model, @RequestParam(value = "code") String code) {
            return "login";
    }
    

    如果您的网址是http://localhost:8081/callback/AQDNm6hezKdTsId5k4oXKNo,那么路径变量方法的情况如下。

    @RequestMapping(value = "/callback/{code}", method = RequestMethod.GET)
    public String callbackFacebook(Model model, @PathVariable(value = "code") String code) {
            return "login";
    }
    

    请参阅requestparam-vs-pathvariable 以获得更清晰的信息。

    【讨论】:

      【解决方案3】:

      我将解释两种方式。

      1-如果在项目某处的会话中作为属性添加,可以这样获取:

        @RequestMapping(value = "/callback?{code}", method = RequestMethod.GET)
          public String callbackFacebook(Model model, @PathVariable(name = "code") String code,HttpServletRequest request) {
      
              String code1 = request.getSession().getAttribute("code").toString();
      
      
              return "login";
          }
      

      示例输出:AQDNm6hezKdTsId5k4oXKNo

      2-你可以直接获取URL。但是你需要解析URL。因为所有的URL都来了。

      @RequestMapping(value = "/callback?{code}", method = RequestMethod.GET)
          public String callbackFacebook(Model model, @PathVariable(name = "code") String code,HttpServletRequest request) {
      
              StringBuffer requestURL = request.getRequestURL();
      
              return "login";
          }
      

      示例输出:http://localhost:8081/callback?code=AQDNm6hezKdTsId5k4oXKNo

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-06
        • 2017-10-01
        • 2018-04-07
        • 2021-12-26
        • 1970-01-01
        • 2016-08-24
        • 2012-11-29
        • 2018-08-20
        相关资源
        最近更新 更多