使用 HttpSession 时出现空指针异常
Getting null pointer exception while using HttpSession
我目前正在学习 Servlet。使用下面的代码时,我得到 NullPointerException
。每当在 SqServlet
中调用 getAttribute()
函数以获取 k 中的值时,它都会返回空值。谁能告诉我哪里出错了?谢谢
public class AddServelet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
try {
int i = Integer.parseInt(req.getParameter("num1"));
int j = Integer.parseInt(req.getParameter("num2"));
int k = i + j;
PrintWriter out = res.getWriter();
HttpSession session = req.getSession();
req.setAttribute("k", k);
res.sendRedirect("sq");
} catch(Exception e) {
e.printStackTrace();
}
}
}
public class SqServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
try {
HttpSession session = req.getSession(false);
int k = (int)session.getAttribute("k");
k = k * k;
PrintWriter out = res.getWriter();
out.println("Square of sum: " + k);
} catch(Exception e) {
e.printStackTrace();
}
}
}
getSession(false) 上的 HTTPServletRequest 将 return 值。
HttpSession session = req.getSession(false); //will return null if no session object is found.
AddServelet get 方法创建一个会话对象。这意味着您需要先点击此 Get 方法,然后再点击 SqServlet HTTP URL.
如果没有找到会话,最好修改您的代码以处理空检查和 return 用户。
您正在请求中设置 "k" 然后从会话中获取它
在 AddServelet 中,您应该这样做:
session.setAttribute("k", k);
而不是
req.setAttribute("k", k);
我目前正在学习 Servlet。使用下面的代码时,我得到 NullPointerException
。每当在 SqServlet
中调用 getAttribute()
函数以获取 k 中的值时,它都会返回空值。谁能告诉我哪里出错了?谢谢
public class AddServelet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
try {
int i = Integer.parseInt(req.getParameter("num1"));
int j = Integer.parseInt(req.getParameter("num2"));
int k = i + j;
PrintWriter out = res.getWriter();
HttpSession session = req.getSession();
req.setAttribute("k", k);
res.sendRedirect("sq");
} catch(Exception e) {
e.printStackTrace();
}
}
}
public class SqServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) {
try {
HttpSession session = req.getSession(false);
int k = (int)session.getAttribute("k");
k = k * k;
PrintWriter out = res.getWriter();
out.println("Square of sum: " + k);
} catch(Exception e) {
e.printStackTrace();
}
}
}
getSession(false) 上的 HTTPServletRequest 将 return 值。
HttpSession session = req.getSession(false); //will return null if no session object is found.
AddServelet get 方法创建一个会话对象。这意味着您需要先点击此 Get 方法,然后再点击 SqServlet HTTP URL.
如果没有找到会话,最好修改您的代码以处理空检查和 return 用户。
您正在请求中设置 "k" 然后从会话中获取它
在 AddServelet 中,您应该这样做: session.setAttribute("k", k);
而不是 req.setAttribute("k", k);