-1
여러 요청이 들어올 때 데이터를 추가 할 수있는 서블릿에서 세션을 만들고 싶습니다. 먼저 세션이 null인지 확인합니다. 세션을 가져 와서 초기 속성을 저장하십시오. 이것은 서블릿에 대한 첫 번째 요청에서 내가 원하는 것입니다. 추가 요청의 경우 세션이 존재해야하며 세션의 속성에 대한 데이터가 수정됩니다. 그러나 그 밖의 조건에서는 내 속성이 존재하지 않습니다. 여러 요청을 통해 세션이 지속되도록하려면 어떻게해야합니까? 감사합니다여러 요청에서 HTTP 세션에 속성이 저장되지 않음
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
int quantity = 0;
Item[] item = new Item[9];
int currRow = Integer.parseInt(request.getParameter("rowNum"));
HttpSession session = request.getSession(false);
if (session == null) {
session = request.getSession();
for (int i = 0; i < 9; i++) {
item[i] = new Item();
item[i].setID(request.getParameter("ID" + (i + 1)));
item[i].setPrice(Double.parseDouble(request.getParameter("p" + (i + 1))));
session.setAttribute(Integer.toString((i + 1)), item[i]);
}
quantity = Integer.parseInt(request.getParameter("q" + currRow));
Item currItem = (Item) session.getAttribute(Integer.toString(currRow));
currItem.setQuantity(currItem.getQuantity() + quantity);
session.setAttribute(Integer.toString(currRow), currItem);
} else {
if (null == session.getAttribute("2")) {
out.println("not exist");
} else {
out.println("exist");
}
}
}
}
FIX : 대신 (false)를 request.getSession의
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
int quantity = 0;
Item[] item = new Item[9];
int currRow = Integer.parseInt(request.getParameter("rowNum"));
HttpSession session = request.getSession();
Item currItem;
if (session.getAttribute("1") == null) {
for (int i = 0; i < 9; i++) {
item[i] = new Item();
item[i].setID(request.getParameter("ID" + (i + 1)));
item[i].setPrice(Double.parseDouble(request.getParameter("p" + (i + 1))));
session.setAttribute(Integer.toString((i + 1)), item[i]);
}
quantity = Integer.parseInt(request.getParameter("q" + currRow));
currItem = (Item) session.getAttribute(Integer.toString(currRow));
currItem.setQuantity(currItem.getQuantity() + quantity);
} else {
quantity = Integer.parseInt(request.getParameter("q" + currRow));
currItem = (Item) session.getAttribute(Integer.toString(currRow));
currItem.setQuantity(currItem.getQuantity() + quantity);
}
}
이 코드는 실제로 작동하지만이 코드는 실제로 왜 작동하지 않는지 이해할 수 없습니다. –