有没有办法在Spring MVC中获取当前会话,但不是通过请求。通常,我们所做的是在操作/控制器类方法中获取请求。从这个请求中,我们逐个请求获得会话。getSession()。但是,有没有办法在没有此请求对象的情况下获取此会话?
我的动机是,在一个实用程序类中,我需要访问会话中设置的值,而这个实用程序类方法是从控制器类的50多个方法中访问的。如果我必须从请求中获得会话,那么我需要更改所有这50个位置。这看起来很乏味。请提出替代方案。
我们总是可以在不传递HttpServletRequest的情况下从控制器空间检索HttpSession。
Spring提供了将请求公开给当前线程的侦听器。您可以参考RequestContextListener。
此侦听器应在您的web中注册。xml
<listener>
<description>Servlet listener that exposes the request to the current thread</description>
<display-name>RequestContextListener</display-name>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
这就是如何从会话中获取详细信息。
public final User getUser() {
RequestAttributes requestAttributes = RequestContextHolder
.currentRequestAttributes();
ServletRequestAttributes attributes = (ServletRequestAttributes) requestAttributes;
HttpServletRequest request = attributes.getRequest();
HttpSession httpSession = request.getSession(true);
Object userObject = httpSession.getAttribute("WEB_USER");
if (userObject == null) {
return null;
}
User user = (User) userObject;
return user;
}
我有一个用原型范围定义的组件。我想在我的服务类中使用该组件。我希望Spring每次我呼吁它时都能为我提供一个新的豆子实例。 组件类别: 服务等级: 通过使用这个配置,我在我的prototypeBeans ArrayList中获得了相同的ProtoTypeBean实例。问题是,当我每次在foreach循环中调用它时,我如何让Spring理解给我一个prototypeBean的新实例?我发现我可以使用
问题内容: 我只是想知道是否可以在不将Outlook安装在服务器上且不使用COM Interop的情况下向人们发送会议请求(我不惜一切代价避免在服务器上使用)。 我们在Windows 2003域中拥有Exchange 2003,并且所有用户都是域用户。我想我可以发送’round iCal / vCal之类的东西,但是我想知道是否存在通过Exchange在不使用Outlook的情况下发送会议请求的适
我知道我可以获得包名并从完整的类名中去掉相应数量的字符,但我猜已经有人这么做了?
问题内容: 我正在尝试设置spring xml配置,而不必创建进一步的。但是,即使我将数据库属性包括在 spring.xml: 我在这里想念什么? 问题答案: 在entityManagerFactory bean定义中指定“ packagesToScan”和“ persistenceUnitName”属性。 请注意,这适用于Spring版本> 3.1
问题内容: 我需要将一堆列名称解析为列索引(以便使用一些不错的方法)。但是,我知道如何获取对象的唯一方法是调用some 。 我的问题是,获取ResultSet会占用我不必要的资源-我真的不需要查询表中的数据,我只需要一些有关表的信息。 有谁知道以任何方式获取对象而不先获取(可能来自巨大表)的对象吗? 问题答案: 也许你可以使用 它为每个表列返回一行。 在这种情况下,您将使用返回的本身,而不是其。
我尝试在bean部分中使用环境: 但环境中只有系统属性 所以问题是如何从application.yml加载配置,以及如何以这样的函数式实现@ConfigurationProperties的模拟? 注释、和开始工作。但是注释仅存在于依赖项中,而yml解析类仅存在于中。 在包含依赖项并将添加到beans部分之后,注释开始工作,但也未包含来自application.yml的配置。所以我增加了这一节: 到