如何在Java的普通类中获取Session以及request对象
发布网友
发布时间:2022-05-17 11:48
我来回答
共4个回答
热心网友
时间:2023-10-20 16:44
曾经有多少人因为不知如何在业务类中获取自己在Action或页面上保存在Session中值,当然也包括我,但是本人已经学到一种办法可以解决这个问题,来分享下,希望对你有多多少少的帮助!
前期准备:创建一个项目,并配置好一些需要的文件。
创建好项目后就创建一个类RequestFilter。
创建RequestFilter类是需要继承一接口,必须是javax.servlet包下的Filter接口。
创建好后在RequestFilter中创建线程:
//创建线程
threadLocalRequest、threadLocalResponse
在doFilter()方法中写
//把request、response传入
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;
public class RequestFilter implements Filter {
//创建线程
public static ThreadLocal<HttpServletRequest> threadLocalRequest = newThreadLocal<HttpServletRequest>();
public static ThreadLocal<HttpServletResponse> threadLocalResponse = newThreadLocal<HttpServletResponse>();
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throwsIOException, ServletException {
threadLocalRequest.set((HttpServletRequest) arg0);
threadLocalResponse.set((HttpServletResponse) arg1);
arg2.doFilter(arg0, arg1);
}
public void destroy() {}
public void init(FilterConfig arg0) throws ServletException {}
}
在类RequestFilter中写好代码后在WEB-INF目录下的web.xml文件中注册此类,
<filter>
<filter-name>RequestFilter</filter-name>
<filter-class>架包名.RequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>RequestFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
注册好后就可以在Java类中轻松获取自己在Action或页面上保存在Session中值,具体调用
//获取request
HttpServletRequest request = RequestFilter.threadLocal.get();
request.getSession().getAttribute("所保存的名称");
HttpServletRequest request = RequestFilter.threadLocal.get();这句话一定要放在方法里面,不能放在方法外面。
只是简单的一些操作,希望对你有一定的帮助!
热心网友
时间:2023-10-20 16:44
简单的说 一个自己写的Servlet肯定要继承HttpServlet,这个时候在重写post 和get 方法里面 传进的参数就是 Request 对象 和Response 对象 直接用request.getAttitude().getSession("你存进的session键值"); 记着 村的是什么类型对象就用什么对象去接收,希望可以帮到你。。。。。。。。。。。
热心网友
时间:2023-10-20 16:45
普通的java类中貌似没有办法获取到的,要么是基于servlet,要么是struts下才行,都要导入jar包的。
热心网友
时间:2023-10-20 16:46
HttpServletRequest 对象下的 get方法