jsp session을 이용한 쇼핑몰 구현

2022. 9. 20. 19:38· 웹

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%session.invalidate();%>
<center>
<h2>로그인</h2>
<hr>
<%System.out.println(session.getId()); %>
<form action="Loginsession.jsp" method="post">
	<input type="text" name="userid" pattern="{2,15}" required title="2~15자" maxlength="15"minlength="2">
	<button type="submit">로그인</button>
</form>
</center>
</body>
</html>

다른 페이지에서 로그아웃시 로그인 페이지로 보낼것 이기에 

로그인 페이지에 오면 일단 세션을 초기화 시킨다 

또한 공백으로는 로그인을 할 수 없도록 막아 놓았다.

 

 

로그인을 하면 일단 세션을 만드는 페이지로 넘어갔다가 메인 페이지로 가게 된다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%request.setCharacterEncoding("UTF-8"); %>
<%
String id = session.getId();
String userid = request.getParameter("userid");
session.setAttribute(id, userid);
response.sendRedirect("setProduct.jsp");
%>
</body>
</html>

사용자가 로그인한 아이디를 값으로 하고 사용자의 세션 아이디를 이름으로 세션을 만든다.

그리고 메인 페이지로 넘어가게 된다.

 

 

 

로그인을 하고 넘어오면 상품을 선택해서 추가할 수있도록 하였다.

계산을 누르면 지금까지 자신이 추가한 상품을 볼 수 있는 장바구니로 가게 된다.

또한 로그아웃을 누르면 처음 로그인 페이지로 보낼 것이다.

 

 

<%@page import="javax.websocket.SendResult"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%request.setCharacterEncoding("UTF-8"); %>
<%
String id = session.getId();
if(session.getAttribute(id) == null){
	response.sendRedirect("Loginshop.jsp");
}
%>
<center>
<h2>상품선택</h2>
<button onclick=logout()>로그아웃</button>
<hr>
<%=session.getAttribute(id) %>님이 로그인 한 상태 입니다. <%=session.getAttribute(id) %>
<hr>
<form action="add.jsp" method="post">
	<select name="fruits">
		<option name="fruit">사과
		<option name="fruit">귤
		<option name="fruit">파인애플
		<option name="fruit">포도
		<option name="fruit">배
	</select>
	<button type="submit"> 추가 </button><br><br>
</form>
<a href="checkout.jsp">계산</a>
</center>
<script type="text/javascript">
function logout(){
	location.href="Loginshop.jsp";
}
</script>
</body>
</html>

현재 자신의 세션이 있는지 부터 검사하고 메인 페이지를 띄워준다.

 

상품을 추가할 경우 alert창으로 사용자에게 알려준다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"  %>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String userid = session.getId();
if(session.getAttribute(userid) == null){
	response.sendRedirect("Loginshop.jsp");
}

String fruit = request.getParameter("fruits");
String id = session.getId()+1;
boolean over=false;
ArrayList<String> fruits;
if(session.getAttribute(id) == null){
	fruits = new ArrayList<String>();
}else{
	fruits= (ArrayList<String>)session.getAttribute(id);
}
for(int i=0; i<fruits.size();i+=2){
	if(fruit.equals(fruits.get(i))){
		System.out.println(Integer.toString(Integer.parseInt(fruits.get(i+1))));
		fruits.set(i+1, Integer.toString(Integer.parseInt(fruits.get(i+1))+1));
		over=true;
	}
}
if(!over){
	fruits.add(fruit);
	fruits.add("1");
}
session.setAttribute(id, fruits);
%>
<script type="text/javascript">
window.onload = function(){
	alert("<%=fruit%>가 추가되었습니다.");
	location.href="setProduct.jsp"
}
</script>
</body>
</html>

여기또한 세션이 유효한지 부터 검사하고 사용자가 추가한 상품을 사용자의 세션 아이디를 이용하여

ArrayList로 상품을 관리한다.

 

세션 아이디에 +1을 한 이유는 같은 이름으로 하면 사용자의 세션 값과 이름이 겹치기에 

그냥 +1을 한 것이고 전에 만든 세션 이름과 동일 하지만 않는다면 어떻게 해도 상관은 없다.

 

자신이 선택한 상품을 보여주고 수량을 고칠수있게 해주며 하나씩 삭제를 할 수 도 있다.

아니면 모든 상품을 삭제할 수 도 있으며 다시 주문하러 되돌아 갈 수 있는 버튼이 있다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"  %>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<h2>계산</h2>
<p>선택한 상품 목록</p>
<hr>
<table>
<tbody>
<%System.out.println(session.getId()); %>
<%
String userid = session.getId();
if(session.getAttribute(userid) == null){
	response.sendRedirect("Loginshop.jsp");
}

String id = session.getId()+1;
if(session.getAttribute(id) != null){
	ArrayList<String> fruits = (ArrayList)session.getAttribute(id);
	for(int i=0; i<fruits.size(); i+=2){
		%>
		<tr>
			<td>
			<% out.println(fruits.get(i));%>
			</td>
			<td>
			<button onclick=minusone(<%=i %>)>-</button>
			</td>
			<td>
			<% out.println(fruits.get(i+1));%>
			</td>
			<td>
			<button onclick=plus(<%=i %>)>+</button>
			</td>
			<td>
			<button onclick=delone(<%=i %>)>삭제</button>
			</td>
		</tr>
<% }
}%>
</tbody>
</table>
<div>
<button name="clear" onclick=clearshop()>장바구니 비우기</button>
&nbsp;<button name="back" onclick=back()>주문하러 가기</button>
</div>
</center>

<script type="text/javascript">
function clearshop(){
	<%if(request.isRequestedSessionIdValid()){%>
	location.replace("clear.jsp?num=-1&option=all");
	<%}%>
}
function back(){
	location.href="setProduct.jsp";
}
function minusone(i){
	location.replace("clear.jsp?num="+i+"&option=minus");
}
function plus(i){
	location.replace("clear.jsp?num="+i+"&option=plus");
}
function delone(i){
	location.replace("clear.jsp?num="+i+"&option=delone");
}
</script>
</body>
</html>

상품을 건든다면 상품을 건들 다른 페이지로 get방식 처럼 값을 담아 이동 시키고

다시 주문하기를 누른다면 이전 페이지로 돌아가게 한다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"  %>
<%request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
if(request.isRequestedSessionIdValid()){
String id = session.getId()+1;
int num = Integer.parseInt(request.getParameter("num"));
System.out.println(request.getParameter("option"));
ArrayList fruits = (ArrayList)session.getAttribute(id);
if(request.getParameter("option").equals("minus")){
	if(Integer.parseInt((String)fruits.get(num+1)) > 0){
		fruits.set(num+1, Integer.toString(Integer.parseInt((String)fruits.get(num+1))-1));
	}
	session.setAttribute(id, fruits);
}else if(request.getParameter("option").equals("plus")){
	fruits.set(num+1, Integer.toString(Integer.parseInt((String)fruits.get(num+1))+1));
	session.setAttribute(id, fruits);
}else if(request.getParameter("option").equals("delone")){
	fruits.remove(num+1);
	fruits.remove(num);
	session.setAttribute(id, fruits);
}else{
	session.setAttribute(id, new ArrayList<String>());
}

}
response.sendRedirect("checkout.jsp");
%>

</body>
<script type="text/javascript">
window.onload() = function(){
	location.href="checkout.jsp";
} 

</script>
</html>

사용자가 누른값에 따라 다른 parameter가 오기 때문에 if문으로 확인한후 상품의 값을 바꾸어 주고 

다시 페이지를 되돌아가는 페이지로 만들었다.

 

 

'웹' 카테고리의 다른 글

jsp에서 경고창 띄우기  (0) 2022.10.11
jsp, oracle 회원 관리 프로그램  (0) 2022.10.11
4번째 페이지에서 정보 띄우기 ( forward )  (0) 2022.09.20
다음 페이지로 값 넘기기 ( foward 없이 )  (1) 2022.09.20
에러 페이지 만들기  (0) 2022.09.16
'웹' 카테고리의 다른 글
  • jsp에서 경고창 띄우기
  • jsp, oracle 회원 관리 프로그램
  • 4번째 페이지에서 정보 띄우기 ( forward )
  • 다음 페이지로 값 넘기기 ( foward 없이 )
코드 죄수
코드 죄수
코드 죄수
코드 탈출기
코드 죄수
전체
오늘
어제
  • 분류 전체보기 (126)
    • 스프링 부트 (5)
    • 스프링 (13)
    • 웹 (18)
    • 데이터베이스 (7)
    • 코딩테스트 (25)
    • 자바 (20)
    • 플라스크 (9)
    • react, react-native (11)
    • 기타 설정 (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
코드 죄수
jsp session을 이용한 쇼핑몰 구현
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.