4. 세션을 이용하여 다음 조건에 맞게 JSP 애플리케이션을 만들고 실행 결과를 확인하시오.
session.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Session</title>
</head>
<body>
<form action="session_process.jsp" method="POST">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="text" name="passwd">
<p> <input type="submit" value="전송">
</form>
</body>
</html>
session_process.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Session</title>
</head>
<body>
<%
String user_id = request.getParameter("id");
String user_pw = request.getParameter("passwd");
if (user_id.equals("admin") && user_pw.equals("admin1234")) {
session.setAttribute("userID", user_id);
response.sendRedirect("welcome.jsp");
} else {
out.println("세션 연결에 실패하였습니다.");
}
%>
</body>
</html>
welcome.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Session</title>
</head>
<body>
<%
String userId = (String)session.getAttribute("userID");
if (userId == null || userId.trim().equals("")) {
response.sendRedirect("session_out.jsp");
return;
}
%>
<h3><%=userId %>님 반갑습니다.</h3>
<a href="session_out.jsp">로그아웃</a>
</body>
</html>
session_out.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<html>
<head>
<title>Session</title>
</head>
<body>
<%
session.invalidate();
response.sendRedirect("session.jsp");
%>
</body>
</html>
5. 다음 조건에 맞게 도서 웹 쇼핑몰을 위한 웹 애플리케이션을 만들고 실행 결과를 확인하시오.
addCart.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.ArrayList" %>
<%@ page import="dto.Book" %>
<%@ page import="dao.BookRepository" %>
<%
String id = request.getParameter("id");
if (id == null || id.trim().equals("")) {
response.sendRedirect("books.jsp");
return;
}
BookRepository dao = BookRepository.getInstance();
Book book = dao.getBookById(id);
if(book == null) {
response.sendRedirect("exceptionNoBookId.jsp");
}
ArrayList<Book> goodsList = dao.getAllBooks();
Book goods = new Book();
for (int i = 0; i < goodsList.size(); i++) {
goods = goodsList.get(i);
if (goods.getBookId().equals(id)) {
break;
}
}
ArrayList<Book> list = (ArrayList<Book>) session.getAttribute("cartlist");
if(list == null) {
list = new ArrayList<Book>();
session.setAttribute("cartlist", list);
}
int cnt = 0;
Book goodsQnt = new Book();
for (int i=0; i< list.size(); i++) {
goodsQnt = list.get(i);
if (goodsQnt.getBookId().equals(id)) {
cnt++;
int orderQuantity = goodsQnt.getQuantity() + 1;
goodsQnt.setQuantity(orderQuantity);
}
}
if (cnt == 0) {
goods.setQuantity(1);
list.add(goods);
}
response.sendRedirect("book.jsp?id=" + id);
%>
cart.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="dto.Book" %>
<%@ page import="dao.BookRepository" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
<link rel = "stylesheet" href = "./resources/css/bootstrap.min.css" />
<%
String cartId = session.getId();
%>
<title>장바구니</title>
</head>
<body>
<jsp:include page="menu.jsp" />
<div class="jumbotron">
<div class="container">
<h1 class="display-3">장바구니</h1>
</div>
</div>
<div class="container">
<div class="row">
<table width="100%">
<tr>
<td align="left"><a href="./deleteCart.jsp?cartId=<%=cartId %>" class="btn btn-danger">삭제하기</a></td>
<td align="right"><a href="./shippingInfo.jsp?cartId=<%=cartId %>" class="btn btn-success">주문하기</a></td>
</tr>
</table>
</div>
<div style="padding-top: 50px">
<table class="table table-hover">
<tr>
<th>상품</th>
<th>가격</th>
<th>수량</th>
<th>소계</th>
<th>비고</th>
</tr>
<%
int sum = 0;
ArrayList<Book> cartList = (ArrayList<Book>) session.getAttribute("cartlist");
if (cartList == null)
cartList = new ArrayList<Book>();
for (int i = 0; i < cartList.size(); i++) { //상품 리스트 하나씩 출력하기
Book book = cartList.get(i);
int total = book.getUnitPrice() * book.getQuantity();
sum = sum + total;
%>
<tr>
<td><%=book.getBookId() %> - <%=book.getName() %></td>
<td><%=book.getUnitPrice() %></td>
<td><%=book.getQuantity() %></td>
<td><%=total %></td>
<td><a href="./removeCart.jsp?id=<%=book.getBookId() %>" class="badge badge-danger">삭제</a></td>
</tr>
<%
}
%>
<tr>
<th></th>
<th></th>
<th>총액</th>
<th><%=sum %></th>
<th></th>
</tr>
</table>
<a href="./books.jsp" class="btn btn-secondary">« 쇼핑 계속하기</a>
</div>
<hr>
</div>
<jsp:include page="footer.jsp" />
</body>
</html>
removeCart.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="dto.Book" %>
<%@ page import="dao.BookRepository" %>
<%@ page import="java.util.ArrayList" %>
<%
String id = request.getParameter("id");
if (id == null || id.trim().equals("")) {
response.sendRedirect("books.jsp");
return;
}
BookRepository dao = BookRepository.getInstance();
Book book = dao.getBookById(id);
if (book == null) {
response.sendRedirect("exceptionNoBookId.jsp");
}
ArrayList<Book> cartList = (ArrayList<Book>) session.getAttribute("cartlist");
Book goodsQnt = new Book();
for (int i = 0; i < cartList.size(); i++) {
goodsQnt = cartList.get(i);
if (goodsQnt.getBookId().equals(id)) {
cartList.remove(goodsQnt);
}
}
response.sendRedirect("cart.jsp");
%>
deleteCart.jsp
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import="dto.Book" %>
<%@ page import="dao.BookRepository" %>
<%
String id = request.getParameter("cartId");
if (id == null || id.trim().equals("")) {
response.sendRedirect("cart.jsp");
return;
}
session.invalidate();
response.sendRedirect("cart.jsp");
%>
'Problem solving > 쉽게 배우는 JSP 웹 프로그래밍' 카테고리의 다른 글
[쉽게 배우는 JSP 웹프로그래밍] 15장 연습문제 (0) | 2021.01.03 |
---|---|
[쉽게 배우는 JSP 웹프로그래밍] 14장 연습문제 (0) | 2021.01.03 |
[쉽게 배우는 JSP 웹 프로그래밍] 11장 연습문제 (0) | 2021.01.03 |
[쉽게 배우는 JSP 웹 프로그래밍] 10장 연습문제 (0) | 2020.11.04 |
[쉽게 배우는 JSP 웹 프로그래밍] 9장 연습문제 (0) | 2020.10.31 |