SSH架构,dao层怎么调用HTTPSession中存储的值

yanbahuzi916 2012-06-12 05:57:29
如题,

在dao层,怎么调用到HTTPSession中存储的userId

不想从 action传参,因为很多地方调用dao层的方法,传参修改量非常大。

如果不用session,应该用什么能实现这个效果啊?

随时随地能取到userId??
...全文
298 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
magicluo 2012-06-12
  • 打赏
  • 举报
回复
既然当下如此,当初分层是如何设计的呢? 感觉很奇怪
wangyizhuce001 2012-06-12
  • 打赏
  • 举报
回复
从OgnlContext取值
jackson_fighting 2012-06-12
  • 打赏
  • 举报
回复
request.getSession
先获取request 再过去session
jackson_fighting 2012-06-12
  • 打赏
  • 举报
回复
过滤器里面 把session放到threadlocal中。
package com.shangwang.util;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 由于Spring 的AOP面向切面编程,与Servlet容器没有任何关联,所以想要获得Session会话比较麻烦。
在Servlet中或struts1中,可以通过ThreadLocal方式将session保存,Spring AOP中获得Session对象。
* @author Administrator
*
*/
public class SysContent {
private static ThreadLocal<HttpServletRequest> requestLocal= new ThreadLocal<HttpServletRequest>();
private static ThreadLocal<HttpServletResponse> responseLocal= new ThreadLocal<HttpServletResponse>();

public static HttpServletRequest getRequest() {
return (HttpServletRequest)requestLocal.get();
}
public static void setRequest(HttpServletRequest request) {
requestLocal.set(request);
}
public static HttpServletResponse getResponse() {
return (HttpServletResponse)responseLocal.get();
}
public static void setResponse(HttpServletResponse response) {
responseLocal.set(response);
}
public static HttpSession getSession() {
return (HttpSession)((HttpServletRequest)requestLocal.get()).getSession();
}
}


过滤器
package com.shangwang.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.shangwang.util.SysContent;

public class GetContentFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
SysContent.setRequest((HttpServletRequest) arg0);
SysContent.setResponse((HttpServletResponse) arg1);
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}


这样就可以用sysContent.getSession了。



yanbahuzi916 2012-06-12
  • 打赏
  • 举报
回复
--有人吗

dao层怎么能调用到 httpSession

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧