gpt4 book ai didi

spring-mvc - Spring 3 MVC 从 Controller 访问 HttpRequest

转载 作者:行者123 更新时间:2023-12-02 22:51:12 26 4
gpt4 key购买 nike

我想自己处理请求和 session 属性,而不是将其留给 spring @SessionAttributes,例如用于 cookie 处理的登录。

我只是不知道如何从 Controller 内访问HttpRequest,我需要一种方法来访问@RequestAttribute之上的一层并访问 >HttpRequest 本身。 Stripes 用于通过实现 ApplicationContext 并调用 getAttribute() 来实现此目的。

此外,将 HttpServletRequest 作为参数传递似乎不起作用:

@RequestMapping(value="/") public String home(HttpServletRequest request){
System.out.println(""+request.getSession().getCreationTime());
return "home";
}

上述方法不会打印任何内容。

您对此有什么建议吗?

最佳答案

如果您只需将 HttpRequest 添加到 Controller 方法签名中,Spring MVC 就会为您提供 HttpRequest:

例如:

/**
* Generate a PDF report...
*/
@RequestMapping(value = "/report/{objectId}", method = RequestMethod.GET)
public @ResponseBody void generateReport(
@PathVariable("objectId") Long objectId,
HttpServletRequest request,
HttpServletResponse response) {

// ...
// Here you can use the request and response objects like:
// response.setContentType("application/pdf");
// response.getOutputStream().write(...);

}

如您所见,只需将 HttpServletRequestHttpServletResponse 对象添加到签名中,Spring MVC 即可将这些对象传递给您的 Controller 方法。您还需要 HttpSession 对象。

编辑:似乎 HttpServletRequest/Response 对于 Spring 3 下的某些人不起作用。正如 Eduardo Zola 指出的那样,尝试使用 Spring WebRequest/WebResponse 对象。

我强烈建议您看看list of supported arguments Spring MVC 能够自动神奇地注入(inject)到您的处理程序方法中。

关于spring-mvc - Spring 3 MVC 从 Controller 访问 HttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8504258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com