열심히 끝까지
[코딩 과제] - 8/2 강사님 문제 본문
[session을 이용한 장바구니 예제]
1. index.jsp(표지 페이지)
로그인 <form>을 제공
이름(uname)을 입력하면 다음 페이지(main.jsp)로 이동
method="post"
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<%session.invalidate(); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인(표지페이지)</title>
</head>
<body>
<form action="main.jsp" method="post">
<input type="text" name="uname">
<input type="submit" value="로그인">
</form>
</body>
</html>
2. main.jsp
uname님, 반갑습니다! :D
물건을 구매하는 <form>을 제공 / 물건 정보 담아서 보냄
5가지의 물건 <select> > 우리가 알아서.... 개수 재고 신경 안씀
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구매 페이지</title>
</head>
<body>
<%
String uname=request.getParameter("uname");
session.setAttribute("uname", uname);
%>
<h1><%=request.getParameter("uname") %>님, 반갑습니다! :D </h1><br>
<form action="add.jsp" method="post">
<select name="product">
<option>아메리카노</option>
<option>카페라떼</option>
<option>카페모카</option>
<option>프라푸치노</option>
<option>스무디</option>
</select>
<input type="submit" value="장바구니에 추가하기">
</form>
<a href ="result.jsp">구매하기</a>
<!-- 새로운 요청을 했기 때문에 uname이 result에 도달하는 것은 불가능
-->
<%-- 강사님 방법 --%>
<h1><%=session.getAttribute("uname") %>님, 반갑습니다! :D</h1>
<form action="add.jsp" method="post">
<select name="product">
<option>키링</option>
<option>아이스홍시</option>
<option>은귀고리</option>
<option>스마트톡</option>
<option>식빵</option>
</select>
<input type="submit" value="장바구니에 추가하기">
</form>
<a href ="result.jsp">구매하기</a>
</body>
</html>
<a> 구매하기</a>
3. 물건을 하나 select해서 전송하게 되면 add.jsp 실행
구매한 물건을 장바구니에 추가하는 로직]
장바구니 : 브라우저를 종료하면 사라지는 객체(session)에 저장
로직을 수행완료하면 다시 main.jsp로 이동
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>장바구니에 물건을 추가하는 로직(화면 출력 x)</title>
</head>
<body>
<%-- 내 방법 --%>
<%
String product=(String)request.getParameter("product");
ArrayList<String> bproduct = (ArrayList<String>)session.getAttribute("bproduct");
if(bproduct==null){ // 장바구니가 없을 경우
bproduct=new ArrayList<String>();
}
bproduct.add(product);
session.setAttribute("bproduct",bproduct);
%>
<%-- 강사님 방법 --%>
<%
String tproduct=request.getParameter("product");
ArrayList<String> datas=(ArrayList)session.getAttribute("datas");
// session 내장 객체에 저장된 장바구니를 불러오는 코드
if(datas==null){// 장바구니가 생성되지 않은 경우
datas=new ArrayList<String>();
session.setAttribute("datas",datas);
}
datas.add(tproduct);
%>
<%-- 스크립트는 같으니 패스 --%>
<script type="text/javascript">
alert("<%=product%>이(가) 추가되었습니다.");
history.go(-1);
</script>
</body>
</html>
4. result.jsp
지금까지 장바구니에 담긴 모든 물건을 화면에 출력
+) 단, 능력이 된다면 유효성 검사를 수행해주세요!
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>구매하기(결제페이지)</title>
</head>
<body>
<h1>구매한 상품 목록</h1>
<h2><%=session.getAttribute("uname") %>님이 선택한 상품 목록</h2>
<hr>
<%
ArrayList<String> bproduct=(ArrayList)(session.getAttribute("bproduct"));
if(bproduct==null){
out.println("선택한 상품이 없습니다.");
}
else{
for(String product:bproduct){
out.println(product+"<BR>");
}
}
%>
<br>
<a href="main.jsp">메인으로</a>
<%-- 강사님 방법 --%>
<h1><%=session.getAttribute("uname") %>님이 구매한 상품 목록</h1>
<hr>
<ol>
<%
ArrayList<String> datas=(ArrayList)session.getAttribute("datas");
if(datas==null){
out.println("<h2>구매한 상품이 없습니다!</h2>");
}
for(String v : datas){
out.println("<li>"+v+"</li>"); // li는 숫자 오더리스트
}
%>
</ol>
</body>
</html>
[application을 이용한 SNS 예제]
1. index2.jsp
로그인 form
로그인한 사람의 이름(id)을 전달
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<%session.invalidate(); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<form action="main2.jsp" method="post">
<input type="text" name="id">
<input type="submit" value="로그인">
</form>
</body>
</html>
2. main2.jsp
[로그인한 사림 이름]님 : [ (msg) ] [글쓰기]
--------------------------------------------------
banana 하이 :D
banana (*^▽^*)
aaa ㅎㅇ
>> application scope에 저장
[글쓰기]버튼 클릭시
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>SNS 창</title>
</head>
<body>
<%
String id = request.getParameter("id");
if(id!=null){ // index2.jsp를 통해서 페이지를 출력할때에만
session.setAttribute("id", id);
// session으로 해야한다/ 보안상의 문제로...
}
%>
<form action="add2.jsp" method="post">
[<%=request.getParameter("id") %>]님 : <input type="text" name="msg"> <input type="submit" value="글쓰기"><br>
---------------------------------------------------<br>
<%
ArrayList<String> ids = (ArrayList<String>)application.getAttribute("ids");
ArrayList<String> msgs = (ArrayList<String>)application.getAttribute("msgs");
if(ids==null && msgs==null){
out.println("<h3>유저와 메세지가 없습니다.</h3>");
}
else{
for(int i=0;i<ids.size(); i++){
out.println(ids+"\t"+msgs+"<BR>");
}
}
%>
<!-- 강사님 방법 -->
[<%=session.getAttribute("id")%>]님 : <input type="text" name="msg"><input type="submit" value="글쓰기">
</form>
<hr>
<ol>
<%
ArrayList<String> datas=(ArrayList)application.getAttribute("datas");
if(datas==null){
out.println("아직 내용이 없습니다.");
}
else{
for(String v : datas){
out.println("<LI>"+v+"</LI>");
}
}
%>
</ol>
</body>
</html>
3. add2.jsp
누가 어떤 msg를 작성했는지 AL<String>에 저장
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList"%>
<% request.setCharacterEncoding("UTF-8"); %>
<%
String id = (String)request.getParameter("id");
String msg = (String)request.getParameter("msg");
ArrayList<String> ids = (ArrayList)application.getAttribute("ids");
ArrayList<String> msgs = (ArrayList)application.getAttribute("msgs");
if(ids==null && msgs==null){
ids = new ArrayList<String>();
msgs = new ArrayList<String>();
}
ids.add(id);
msgs.add(msg);
application.setAttribute("ids", ids);
application.setAttribute("msgs", msgs);
// history.go(-1)을 사용해보았지만..
%>
<!-- 강사님 방법 -->
<%
String tmsg=request.getParameter("msg");
tmsg=session.getAttribute("id")+" "+tmsg;
ArrayList<String> datas=(ArrayList)application.getAttribute("datas");
if(datas==null){
datas=new ArrayList<String>();
application.setAttribute("datas", datas);
}
datas.add(tmsg);
response.sendRedirect("main2.jsp");
%>
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(과제)' 카테고리의 다른 글
능력단위평가 - 오류처리 (0) | 2022.08.11 |
---|---|
[코딩 과제] - 8/4 강사님 문제 (0) | 2022.08.04 |
[코딩 과제] - 7/26 주사위 게임 (0) | 2022.07.26 |
[코딩 과제] - 7/26 강사님 문제 (0) | 2022.07.26 |
[코딩 과제] - 7/25 강사님 문제 (0) | 2022.07.25 |