java - 如何在 spring mvc 中没有模型对象的情况下向 session 添加属性?

标签 java spring spring-mvc

我有一个类:

@Controller(value = "services")
@RequestMapping("/")
@SessionAttributes({"SESSIONID"})
public class Services {

   @RequestMapping("/user/loginStatic")
   @ModelAttribute("SESSIONID")
   public LoginResponseBean loginStatic(String username){
       LoginResponseBean result = otherClass.login(username);
       retrun result;
   }
}

我的问题:此代码导致在 session 中存储“结果”对象,但我想在 session 中存储“result.getSessionId()”。

我无法将“模型模型”添加到“loginStatic”方法的输入参数中,因为它会更改方法签名,而我现在无法执行此操作。 而且我也无法明确获取 http session 并在其中设置属性(由于其他副作用)。 我怎么能那样做呢? 谢谢..

最佳答案

您可以使用<mvc:interceptors/>注册定制 HandlerInterceptor 这将适用于一个、多个或所有 Controller 。例如,以下是如何为所有 Controller 注册拦截器:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="a.b.c.MyHandlerInterceptorAdapter"/>
    </mvc:interceptor>
</mvc:interceptors>

另请参阅 mvc-config-interceptors mvc-handlermapping-interceptor 文档以获取更多详细信息。

注意:Spring 3.2 文档已链接,因此您可能需要更改 URL 中的版本号以匹配您正在使用的 Spring 版本。

关于java - 如何在 spring mvc 中没有模型对象的情况下向 session 添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14230276/

相关文章:

java - 现在你在 Neo4j 2.0 中创建事务了吗?

java - 使用 GeckoDriver 和 Firefox 执行代码时 org.openqa.selenium.firefox.NotConnectedException : Unable to connect to host 127. 0.0.1

java - 在我的 Spring Boot Web 应用程序中,如何在没有模板引擎的情况下发送包含 html 的电子邮件>

spring - IntelliJ IDEA 关于 Spring 上下文的新消息

sql - 通过 jdbctemplate.batchupdate 从 sql 批量插入中获取身份

spring-mvc - 使用 Thymeleaf 的 "application-specific"在 Web UI 中显示 "fields.hasErrors"验证错误

java - 自定义登录表单无法使用 Spring Security

java - 如何在 spring 3.2 mvc 中接收复杂对象?

java - 如何使用 Escripts 插件运行 Eclipse 项目?

java - 解析从 Salesforce 获取的数据时出现加密错误