Java 如何从用户请求中获取用户代理?

Java 如何从用户请求中获取用户代理?,java,spring,spring-boot,spring-mvc,Java,Spring,Spring Boot,Spring Mvc,我必须从用户请求中获取用户代理,并将自定义信息添加到该用户代理,然后将其发回。 我有以下控制器: @RequestMapping("/orders") @Controller public class MyController { @GetMapping("/new_order") public String newOrder(RedirectAttributes redirectAttributes, Model model) { if (isUserNotAu

我必须从用户请求中获取
用户代理
,并将自定义信息添加到该
用户代理
,然后将其发回。 我有以下控制器:

@RequestMapping("/orders")
@Controller
public class MyController {
    @GetMapping("/new_order")
    public String newOrder(RedirectAttributes redirectAttributes, Model model) {
        if (isUserNotAuthorized()) {
            return getLoginRedirectPage(redirectAttributes, "/login");
        }
        model.addAttribute("order", new Order());
        // How to retrieve User-agent and add some custom info and return it back to the user?
        return "new_order";
    }
}

谢谢你的帮助

在控制器方法中注入
HttpServletRequest
。从那里使用
HttpServletRequest#getHeader(…)
获取所需的头

    @GetMapping("/new_order")
    public String newOrder(RedirectAttributes redirectAttributes, HttpServletRequest request, Model model) {
        String userAgent = request.getHeader("User-Agent");
        if (isUserNotAuthorized()) {
            return getLoginRedirectPage(redirectAttributes, "/login");
        }
        model.addAttribute("order", new Order());
        // How to retrieve User-agent and add some custom info and return it back to the user?
        return "new_order";
    }

您可以通过以下方式从请求中获取标头

    @GetMapping("/new_order")
    public String newOrder(@RequestHeader(value = "User-Agent") String userAgent, RedirectAttributes redirectAttributes, Model model) {
           //...
    }
要将标题发送回客户端,可以使用ResponseEntity

public ResponseEntity<String> newOrder() {
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.set("User-Agent", "updated-Value");

    return ResponseEntity.ok()
      .headers(responseHeaders)
      .body("New order created.");
}
public ResponseEntity newOrder(){
HttpHeaders responseHeaders=新的HttpHeaders();
responseHeaders.set(“用户代理”、“更新值”);
返回ResponseEntity.ok()
.标题(负责人)
.body(“创建新订单”);
}

谢谢您的帮助!但是如何将修改后的用户代理发送回客户端?您可能需要使用常量:
@RequestHeader(value=HttpHeaders.user\u-agent)