假设登录用户点击了 url:
www.example.com/forum/234
在spring mvc动作触发之前,我想加载用户对象,用户的权限,论坛对象。
现在我想在这个请求中共享这些对象。因此,其他类可以在当前请求中查看 aUser
和object。Permission
Forum
如果自定义 freemarker 模块也可以引用这些对象(如果它们可用),那可能会很酷。
这可能吗?
假设登录用户点击了 url:
www.example.com/forum/234
在spring mvc动作触发之前,我想加载用户对象,用户的权限,论坛对象。
现在我想在这个请求中共享这些对象。因此,其他类可以在当前请求中查看 aUser
和object。Permission
Forum
如果自定义 freemarker 模块也可以引用这些对象(如果它们可用),那可能会很酷。
这可能吗?
首先,考虑使用 spring-security,它的过滤器可以满足您的一切需求。
如果您想手动完成所有操作,那么您至少有两个选择: - 使用 servlet 过滤器 - 使用 spring 处理程序拦截器(http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference /html/mvc.html#mvc-handlermapping-interceptor)。
在这两种情况下,都将这些数据存储在请求属性中。
另一种选择是创建具有请求范围的bean,它将存储您的数据。
对于 Freemarker,您必须提供自己的FreemarkerViewResolver子类,它将在requiredViewClass()方法中返回FreeMarkerView的子类。在此FreeMarkerView子类中的exposeHelpers()方法中添加您的对象。