Java HttpSession作为控制器中的参数

Java HttpSession作为控制器中的参数,java,spring-mvc,httpsession,Java,Spring Mvc,Httpsession,我试图理解如何在spring控制器中发送HttpSession作为参数。 我有一个jsp,它在单击submit按钮时执行post请求。在控制器中,按如下方式读取会话 在控制器中: public ModelAndView viewEditFundClass(HttpServletRequest request,HttpServletResponse response,Model model){ HttpSession session = (HttpSession)request.getSessio

我试图理解如何在spring控制器中发送HttpSession作为参数。 我有一个jsp,它在单击submit按钮时执行post请求。在控制器中,按如下方式读取会话

在控制器中:

public ModelAndView viewEditFundClass(HttpServletRequest request,HttpServletResponse response,Model model){
HttpSession session = (HttpSession)request.getSession();

java.util.Date startDate = sesseion.getAttribute("startDate");
但是,当我将控制器更改为以下内容时,我仍然能够访问会话

 public ModelAndView viewEditFundClass(HttpServletRequest request,HttpServletResponse response, HttpSession session,Model model)

我想知道这是如何在Spring中完成的,即post请求是如何作为参数传递HttpSession的?此会话有效吗?

假设您使用的是Spring 3+
@Controller
@RequestMapping
处理程序方法,Spring为您的处理程序定义了一组默认的

  • 会话对象(Servlet API):类型为
    HttpSession
    。争论 此类型强制存在相应的会话。作为一个 结果,这样的参数永远不会
    null
Spring使用策略模式来实现这一点,使用接口。它检查处理程序方法的参数类型,并尝试为每种类型找到能够解析其参数的
HandlerMethodArgumentResolver


对于
HttpSession
,这个实现非常简单。

非常感谢您的解释。