【问题标题】:Can't access HttpSession in Spring MVC @Controller class无法在 Spring MVC @Controller 类中访问 HttpSession
【发布时间】:2018-03-21 15:11:21
【问题描述】:

我在 Spring MVC 项目中有一个控制器类。我的代码如下:

@Controller
public class MainController {

@RequestMapping(value = "/doLogin")
public String login(@RequestParam("email") String email, @RequestParam("pwd") String password, Model model){
   //some code
  }
}

我想将 HttpSession 作为方法参数传递,但我无法访问 HttpSession。我附上了截图:

【问题讨论】:

  • 我的回答解决了你的问题吗?如果解决了,那么您也可以接受我对其他 SO 用户的回答。

标签: java spring spring-mvc httpsession


【解决方案1】:

您可以从HttpServletRequest 获取您的HttpSessionreq.getSession(false) 返回一个 HttpSession 对象,如果已经创建,则返回 nullreq.getSession(true) 检查是否没有创建会话,然后返回一个新会话而不是 null。 N.B:同时将你的 javax servlet api jar 添加到你的类路径中。

@Controller
public class MainController {
@RequestMapping(value = "/doLogin")
public String login(HttpServletRequest req, @RequestParam("email") String email, @RequestParam("pwd") String password, Model model){
    HttpSession session = req.getSession(false);
   //some code
  }
}

【讨论】:

  • 不幸的是,这不是我的实际问题。即使在任何方法中,我也无法使用 HttpSession。我在导入 javax.servlet jar 库后解决了这个问题
  • 顺便说一句,我也在最后一行 (N.B) 中说过。 :)
【解决方案2】:

这是因为您的类路径中没有 servlet api 依赖项。

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
</dependency>

【讨论】:

    【解决方案3】:

    您的项目中需要有java servlet。将此添加到您的 pom.xml 中

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    

    【讨论】:

    • 我在看到你的帖子之前就发布了它!
    • 你可以比较时间:) 我的答案比你的早了
    • 怎么了?我刚刚告诉过你,是的,你在我写答案之前就发布了它。我没有看到你的帖子!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多