카트에 상품을 넣고, 원래 페이지로 돌아가기 위한 로직.
카트에 상품을 넣는 url은 여러 페이지에서 접근이 가능하기 때문에, request객체의 Header 에서 Referer라는 파라미터를 가져와서 처리함.
referer는 localhost:8080/~ 형식으로 url전체가 저장된다.
@RequestMapping("add.do")
public void addtoCart(CartVo cartVo, HttpSession session, HttpServletRequest request,
HttpServletResponse response) throws IOException{
// 세션에 장바구니에 추가한 상품 정보를 입력하는 로직
log.info(cartVo);
List<CartVo> list = null;
Object listObj=session.getAttribute("list");
if(listObj==null) {
list = new ArrayList<CartVo>();
}else {
list=(List<CartVo>)listObj;
}
String itemId= cartVo.getItemId();
Book book= service.getBook(itemId);
log.info(book);
cartVo.setBook(book);
int vol=cartVo.getVol();
long price= book.getB_price();
long total= vol*price;
cartVo.setBook(book);
cartVo.setTotal(total);
list.add(cartVo);
session.setAttribute("list",list);
// 헤더 정보에서 이 전의 페이지 url을 가져옴.
String referer = request.getHeader("Referer");
log.info(referer);
// javascript 컨펌 메세지를 출력하는 로직.
response.setContentType("text/html; charset=euc-kr");
response.setCharacterEncoding("euc-kr");
PrintWriter out = response.getWriter();
out.println("<script>");
out.println("if(confirm(\"카트페이지로 이동하시겠습니까?\")==true){");
out.println("location.href = \"../purchase/cart.do\";");
out.println("}else{");
out.println("location.href ='"+ referer +"' ");
out.println("}</script>");
out.flush();
}