0

我想将HttpServletRequest对象HttpSession作为属性存储在 a 中。

     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {       
request.getSession().setAttribute("ses",request);  

这是我在另一个 servlet 中取回它的方法,

HttpSession ses=r.getSession(false);
HttpServletRequest rq=(HttpServletRequest)ses.getAttribute("ses");  

if当我在语句中检查它时,这里 rq 不是 nul 。我的问题是,当我尝试获取请求对象中的参数时,会引发空点异常。如何存储请求,因为我可以再次获取参数?

4

1 回答 1

4

这是不可能的,而且在技术上也没有任何意义。当关联的 HTTP servlet 响应提交并完成时,HTTP servlet 请求实例过期/垃圾。因此,HTTP servlet 请求实例在不同的请求中不再有效。调用它的任何方法都会抛出所有颜色的异常,因为存储的实例不再指向任何东西。初始的 HTTP servlet 请求已经完成了它的工作,已经过期/垃圾。

您需要从请求中准确提取所需的信息并将信息存储在会话中,而不是尝试在不同的请求中访问它。例如

String foo = request.getParameter("foo");
request.getSession().setAttribute("foo", foo);

进而

String foo = (String) request.getSession().getAttribute("foo");

也可以看看:

于 2012-04-04T18:07:08.783 回答