JSP
day42) Scope(request, session, application)
code_learner
2022. 2. 25. 23:34
서블릿에서는 임의의 데이터를 저장하고 저당된 데이터를 사용할 수 있는 4가지 내장객체를 제공한다.
[page]
-지역 변수처럼 해당 페이지 jsp나 서블릿이 실행되는 동안에만 정보를 유지하고자 할 때 사용된다.
[request]
- 유효범위(scope): 1번의 요청 (Response시 해당 스코프 삭제)
- 메서드: setAttribute(Key, value); , getParameter(Key);
[session]
- 유효범위(scope) : 브라우저 or (지정한) 시간
ex) 네이버 로그인(세션: 브라우저) or 은행(세션: 지정시간)
- 메서드: setAtttibute(Key, value);와 getAttribute(Key);
[application]
- 유효범위(scope) : 애플리케이션 or 톰캣(서버)
ex) 싸이월드 투데이 | 주문횟수
- 메서드: setAttribute(key, value);와 getAttribute(key);
[문제]
1. 로그인 페이지-아이디만 입력
2. 메인페이지
상품선택 | 수량 [주문하기]
-------------------------------------
---지금까지 주문한 상품----
주문내역이 없습니다.
or
주문내역 출력
3. 주문내역 추가
[누가] [무엇을] [수량]
1. 로그인페이지
<%@ 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>
<form action="c_main.jsp" method="post">
<input type="text" name="id">
<input type="submit" value="login">
</form>
</body>
</html>
2.메인페이지
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.ArrayList"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
if(id!=null){
session.setAttribute("id", id);
}
%>
<h1><%=session.getAttribute("id") %>님 상품을 선택해 주세요
</h1>
<form action="c_add.jsp" method="post">
<select name="product">
<option>가디건</option>
<option>목도리</option>
<option>장갑</option>
<option>양말</option>
</select> | <input type="number" max="5" min="1" name="number" value="1">
<input type="submit" value="주문하기">
</form>
--지금까지 주문한 상품--<br>
<%
ArrayList<String> data = (ArrayList)application.getAttribute("data");
if(data==null){
out.println("주문내역이 없습니다.");
}else{
for(String v:data){
out.println(v+"<br>");
}
}
%>
</body>
</html>
3. 주문내역 추가 로직 페이지
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String msg = session.getAttribute("id") + "님 [" + request.getParameter("product") + ": "
+ request.getParameter("number") + "]";
ArrayList<String> data = (ArrayList) application.getAttribute("data");
if (data == null) {
data = new ArrayList<String>();
application.setAttribute("data", data);
}
data.add(msg);
response.sendRedirect("c_main.jsp");
%>