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");
%>