[英]How to get a parameter from JAVA httpSession and use/set it on a dao class?
[英]get HttpSession|Request from simple java class not servlet class
我想要 session Object 不在 servlet class 中,但在我们的应用程序中是普通的。
WEB.XML
<listener>
<listener-class>com.abc.web.ApplicationManager</listener-class>
</listener>
<listener>
<listener-class>com.abc.web.SessionManager</listener-class>
</listener>
查看价格。java
public class ViewPrices implements Cloneable, Serializable {
Session session = request.getSession();
servletContext.getSession()
anyWay.getSession();
}
称之为:
RequestFilter.getSession();
RequestFilter.getRequest();
在您的自定义过滤器上:
public class RequestFilter implements Filter {
private static ThreadLocal<HttpServletRequest> localRequest = new ThreadLocal<HttpServletRequest>();
public static HttpServletRequest getRequest() {
return localRequest.get();
}
public static HttpSession getSession() {
HttpServletRequest request = localRequest.get();
return (request != null) ? request.getSession() : null;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
if (servletRequest instanceof HttpServletRequest) {
localRequest.set((HttpServletRequest) servletRequest);
}
try {
filterChain.doFilter(servletRequest, servletResponse);
} finally {
localRequest.remove();
}
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void destroy() {
}
}
您将其注册到您的 web.xml 文件中:
<filter>
<filter-name>RequestFilter</filter-name>
<filter-class>your.package.RequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有多种方法可以做到这一点,但是..不要。 只有您的 web 层才能访问 session。 其他层应该只从它需要的 session 中获取参数。 例如:
service.doSomeBusinessLogic(
session.getAttribute("currentUser"),
session.getAttribute("foo"));
您必须获取请求的选项,以及从中获取请求的选项 - 非 servlet class 中的 session,它仍在 web 层中:
Filter
中的ThreadLocal
中(然后清理它)我认为不可能直接访问 session 并请求 object。 What you can do is pass the session and/or request object from servlet to a Java class either in some method or in constructor of the Java class.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.