在 Spring MVC 控制器中获取查询字符串值
Posted
技术标签:
【中文标题】在 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 控制器中获取查询字符串值的主要内容,如果未能解决你的问题,请参考以下文章
java - 在spring mvc中按名称获取cookie值
类中的字段值不会使用 Spring Boot MVC 控制器更新