如何在春季第一次请求中选择的每个请求中携带价值?

时间:2016-02-01 11:16:27

标签: spring spring-mvc spring-boot

我正在编写一个应用程序,在第一页上选择城市后,每个请求数据将仅针对所选城市。我们如何在没有身份验证的情况下坚持这一点,或者我每次都必须在URL中传递此信息。 我正在使用春季靴和Thymeleaf。

2 个答案:

答案 0 :(得分:1)

您有多种选择。

  1. 第一个显而易见的是在你指出的每一个请求上通过城市。但这可能很痛苦。
  2. 第二个选项是将此值存储在会话中,以便您可以在每次需要时获取此值。但要小心处理它,不要忘记在必要时更新它等。
  3. 使用Spring MVC,您可以在控制器的会话中存储数据:

    ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
    Session session = attr.getRequest().getSession();    
    session.setAttribute("city", cityName);
    

    从会话中恢复数据

    session.getAttribute("city");
    

    即使您不使用SpringMVC,您也可以从HttpRequest获取会话,更加标准,但只有在您有权访问HttpRequest对象时才可以使用:

    Session session = request.getSession();    
    session.setAttribute("city", cityName);
    

答案 1 :(得分:1)

你可以使用session来存储它,在Spring MVC中有@SessionAttributes你可以在你的控制器中使用它,这里我希望你使用" city"作为属性的名称。

@Controller
@RequestMapping("/")
@SessionAttributes("city")
public class EditCityForm {
    // ...
}