Rav*_*ekh 6 java jsp servlets java-ee
我希望会话对象不在servlet类中,而是普通的应用程序.
WEB.XML
<listener>
<listener-class>com.abc.web.ApplicationManager</listener-class>
</listener>
<listener>
<listener-class>com.abc.web.SessionManager</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
ViewPrices.java
public class ViewPrices implements Cloneable, Serializable {
Session session = request.getSession();
servletContext.getSession()
anyWay.getSession();
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*mes 16
叫这个:
RequestFilter.getSession();
RequestFilter.getRequest();
Run Code Online (Sandbox Code Playgroud)
在自定义过滤器上:
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() {
}
}
Run Code Online (Sandbox Code Playgroud)
您将其注册到您的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>
Run Code Online (Sandbox Code Playgroud)
有多种方法可以做到这一点,但是......不这样做.只有您的Web图层才能访问该会话.其他层应该只从它需要的会话中获取参数.例如:
service.doSomeBusinessLogic(
session.getAttribute("currentUser"),
session.getAttribute("foo"));
Run Code Online (Sandbox Code Playgroud)
您必须获取请求的选项,以及仍在Web层中的非servlet类中的会话:
ThreadLocal中Filter(并在之后清理它)| 归档时间: |
|
| 查看次数: |
30910 次 |
| 最近记录: |