쌍용교육(JAVA)/JSP

쌍용교육 -JSP수업 46일차 nestedObject(3)

구 승 2024. 4. 23. 15:46

s13_bufferInfo.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>버퍼 정보</title>
</head>
<body>
버퍼 크기 : <%= out.getBufferSize() %><br>
남은 크기 : <%= out.getRemaining() %><br>
auto flush : <%= out.isAutoFlush() %>
</body>
</html>

 

s14_scopeA.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 4개 기본객체와 영역</title>
</head>
<body>
<%						//   속성명   속성값
	pageContext.setAttribute("msg1","봄");
	request.setAttribute("msg2", "여름");
	session.setAttribute("msg3","가을"); 

%>
page 영역의 msg1 = <%= pageContext.getAttribute("msg1") %><br>
request 영역의 msg2 = <%= request.getAttribute("msg2") %><br>
session 영역의 msg3 = <%= session.getAttribute("msg3") %><br>

</body>
</html>

s15_scopeB.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 4개 기본객체와 영역</title>
</head>
<body>
page 영역의 msg1 = <%= pageContext.getAttribute("msg1") %><br>
request 영역의 msg2 = <%= request.getAttribute("msg2") %><br>
<!-- session은 클라이언트를 식별하기위해 사용,클라이언트가 같으면 세션을 공유한다. 그치만 다른 클라이언트가 들어오면 서버는 새로운 세션을 만듬-->
<!-- 모든 브라우저를 종료한뒤 이 파일만 다시 처음부터 실행하면 세션도 null이 나옴 why? 서버가 새로운 클라이언트로 인식하기 때문에 -->
session 영역의 msg3 = <%= session.getAttribute("msg3") %><br> 

</body>
</html>

s16_setApplication.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>application 속성 지정</title>
</head>
<body>
<%
	String name = "id";
	String value = "dragon";
	application.setAttribute(name, value);
%>
application 기본객체의 속성 설정:
<%= name %> = <%= value %>
</body>
</html>

s17_getApplication.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>application 기본객체 속성 보기</title>
</head>
<body>
<%
	Enumeration<String> attrEnum = 
							application.getAttributeNames();
	while(attrEnum.hasMoreElements()){
		//속성명
		String name = attrEnum.nextElement();
		//속성값
		Object value = application.getAttribute(name);
		
%>
application 속성 : <b><%= name %></b> = <%= value %> <br>
<% 		
	}

%>
</body>
</html>

session은 브라우저를 종료하면 세션이 삭제되지만 Appication은 유지된다. tomcat을 껐다가 키면 Appication도 사라진다.

실행창
Tomcat을 재시작 한뒤 파일을 실행 한 화면. 내용이 사라진 것을 볼 수 있음

 

기본객체   	  pageContext     request     session    application

영역          page <   request  <   session  <  application

일반데이터        o	        o         o				x
									  |      
									   			환경설정정보공유

s18_orderForm.jsp(내답)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>음식주문</title>
<script type="text/javascript">
/*
수량을 입력(주문안할시 0이라고 입력하기), 세가지 음식 중 하나는 꼭 주문
짜장면 4000원 짬뽕5000원 볶음밥6000원
[출력예시]
짜장면 2개
짬뽕 1개
총 지불금액 : 13,000원
 */

 window.onload = function(){
		const myForm = document.getElementById('myForm');
		myForm.onsubmit = function(){
			let foodOrdered = false; // 최소한 한 가지 음식을 선택했는지 확인하기 위한 변수
			
			const input = document.querySelectorAll('.input-check');
			for(let i=0;i<input.length;i++){
				if(input[i].value.trim()==''){
					const label = document.querySelector('label[for="'+input[i].id+'"]');
					const label_text = label.textContent;
					alert(label_text + ' 항목은 필수 입력');
					input[i].value = '';
					input[i].focus();
					return false;
				}
				
				// 수량이 0보다 크다면 해당 음식이 선택된 것으로 간주
				if(parseInt(input[i].value) > 0) {
					foodOrdered = true;
				}
			}
			
			// 최소한 한 가지 음식을 선택하지 않았다면 경고 메시지 표시 후 전송 취소
			if (!foodOrdered) {
				alert('최소한 한 가지 음식을 선택해주세요.');
				return false;
			}
		};
	};
</script>
</head>
<body>
<form action="s19_order.jsp" method="post" id="myForm">
	<table>
		<tr>
			<td class="title">식사류</td>
			<td>
				<ul>
					<li>
						<label for="c0">짜장면</label>
						<input type="number" name="food_c0" id="c0" min="0" max="99" value="0" class="input-check">
					</li>
					<li>
						<label for="c1">짬뽕</label>
						<input type="number" name="food_c1" id="c1" min="0" max="99" value="0" class="input-check">
					</li>
					<li>
						<label for="c2">볶음밥</label>
						<input type="number" name="food_c2" id="c2" min="0" max="99" value="0" class="input-check">
					</li>
				</ul>
			</td>
		</tr>
		<tr align="center">
			<td colspan="2">
				<input type="submit" value="전송">
			</td>
		</tr>
	</table>
</form>
</body>
</html>

s19_order.jsp(내답)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import ="java.util.*" %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>주문내역</title>
</head>
<body>
<%
	request.setCharacterEncoding("utf-8");

	//가격정보
	HashMap<String,Integer> map = new HashMap<String,Integer>();
	
	map.put("짜장면",4000);
	map.put("짬뽕",5000);
	map.put("볶음밥",6000);
	
	//총지불금액
	int sum =0;
	
	
%>
<%
String[] foods = {"짜장면", "짬뽕", "볶음밥"};
String[] counts = {request.getParameter("food_c0"), 
		request.getParameter("food_c1"), 
		request.getParameter("food_c2")};

%>

<%
	for(int i=0; i<foods.length;i++){
		int count = Integer.parseInt(counts[i]);
		if(count>0){
%>
		<%= foods[i] %> : <%= counts[i] %> 개<br>
<%
		sum += count*map.get(foods[i]);
		}
	}
%>
총지불금액:<%= String.format("%,d원",sum) %>
</body>
</html>

 

s18_orderForm.jsp(강사님답)

 

s19_order.jsp(강사님답)