Spring MVC 中获取 HttpServletRequest request, HttpServletResponse response 对象的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC 中获取 HttpServletRequest request, HttpServletResponse response 对象的方法相关的知识,希望对你有一定的参考价值。

补充:
我配置的Spring MVC,使用注解方式,在controller中使用
@Autowired
private HttpServletRequest request;
竟然能得到 request对象,这是怎么注入的呢?
另外使用
@Autowired
private HttpServletResponse response;
却得不到response对象,这又是怎么回事呢?
还望大家赐教。

//这样能获取Request和Response对象,你说的那种没用过
@RequestMapping("view")
public String view(HttpServletRequest request, HttpServletResponse) 
    return "view";

参考技术A 你在Spring配置文件中是不是配置了相应的bean呢?追问

没有对应的配置啊,使用的全部是注解方式,所以应该没有配置request对象的地方

追答

你采用了Spring的注解方式进行注入的,Struts能够讲Map类型的Request,Session转换成我们所需要的Servlet那种作用域类型的。

在 Spring MVC 控制器中获取查询字符串值

【中文标题】在 Spring MVC 控制器中获取查询字符串值【英文标题】:Get Query String Values in Spring MVC Controller 【发布时间】:2013-07-29 21:19:25 【问题描述】:

我有一个这样的引荐来源网址:

http://myUrl.com?page=thisPage&gotoUrl=https://yahoo.com?gotoPage

如何在我的 Spring Controller 中获取“page”和“gotoUrl”的值?

我想将这些值存储为变量,以便以后重复使用。

【问题讨论】:

看看@RequestParam注解。 你真的是想说“推荐人”吗?如果是这样,则接受的答案是错误的。 您可能应该对 gotoUrl 的值进行 URL 编码(尽管我不确定在这个特定示例中它在功能上是否重要)。 【参考方案1】:

在 SpringMVC 中,您可以使用 @RequestParam 注释指定查询字符串中的值被解析并作为方法参数传入。

public ModelAndView getPage(
    @RequestParam(value="page", required=false) String page, 
    @RequestParam(value="gotoUrl", required = false) String gotoUrl) 

【讨论】:

【参考方案2】:

您可以使用 HttpServletRequest 接口中的getParameter() 方法。

例如;

  public void getMeThoseParams(HttpServletRequest request)
    String page = request.getParameter("page");
    String goToURL = request.getParameter("gotoUrl");

【讨论】:

如果我想将请求作为参数传递,这是有道理的。但是,如果我不想将 HttpServletRequest 作为参数传递给我的控制器操作,有没有办法检索参数? 虽然这个答案在技术上是正确的,但它不是使用 Spring 的推荐方法,@Affe 的答案更重要。 @AkshaySinghal 除非您事先不知道参数但您需要一种方法来处理它们 - 然后您可以使用 request.getParameterNames()request.getParameterMap() @LukaszWiktor 很抱歉,我不理解该评论。它似乎与任何问题或答案无关。 @AkshaySinghal 我想说 Raunak 的回答很有帮助。就我而言,我不知道参数的确切名称。我需要创建一个可以读取任何参数的端点。当我注意到这个答案时,我还发现了我之前评论中提到的两种方法。【参考方案3】:

在 Spring MVC 控制器中获取QueryString

这是 Liferay 门户特定的解决方案,它有效。

查询字符串示例:?reportTypeId=1&reportSeqNo=391

为了在Liferay Portal中获取reportSeqNo的值,我们需要获取Original Servlet Request。

String reportSeq = PortalUtil.getOriginalServletRequest(PortalUtil.getHttpServletRequest(renderRequest)).getParameter("reportSeqNo");

【讨论】:

以上是关于Spring MVC 中获取 HttpServletRequest request, HttpServletResponse response 对象的方法的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC获取参数

Spring mvc 3:如何在拦截器中获取路径变量?

在 Spring MVC 中获取根/基 URL

如何在spring mvc控制器中获取getServletContext()

技术Spring MVC 中获取session的几种方法

Spring MVC - 如何在 Spring 控制器的地图中获取所有请求参数?