본문 바로가기
수업 내용/[JSP] JSP

[JSP] 02. 기초 (페이지이동, 세션, out, 버퍼)

by 프롯 2023. 5. 17.

페이지 이동

 

페이지 이동이라고 적어놓았지만

이벤트 발생 시 다른 파일을 실행시키는 것과 같다.

그 과정을 모르는 사용자에 눈에는 페이지가 이동하는 것 같이 보인다.

 

 

action 을 사용하여 이동할 페이지를 설정한다.

<form action ="Ex06_02_page_move.jsp"></form>

액션은 form 태그 내부에 설정할 수도, 이벤트 발생시 실행되는 함수에 적용시킬 수도 있다.

 

 

세션(session)

세션이란 웹 사이트의 여러 페이지에 걸쳐 사용되는사용자 정보를 저장하는 공간을 말한다.

단순히 사용자가 입력한 정보만이 아니라 클라이언트 측의 모든 정보를 저장한다.

 

이러한 정보는 쿠키에 저장되고, 잘못된 데이터가 들어가면 서버가 안돌아 가기도 하니 필요한 경우 지워주어야 한다.

 

 

 

parameter 와 attribute 차이

둘 다 request 객체를 통해 다른 파일의 데이터를 받아온다.

 

parameter는 브라우저(client)에서 만들어진 정보이고,

attribute는 servlet(server)에서 만들어진 정보이다.

 

ex)

request.getParameter("객체");

 

request.setAttribute("객체명", 객체);

Object x = request.getAttribute("객체");

attribute의 경우 형변환을 해줘야 한다.

 

 

 

세션 확인

<%@ 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>
<script type="text/javascript">
	function saveSession(){
		location.href = "Ex07_04_session_save.jsp";
	}
	function removeSession(val){
		location.href = "Ex07_03_session_remove.jsp?type=" + val;
	}
	function initSession(){
		location.href = "Ex07_02_session_init.jsp";
	}
</script>
</head>
<body>
	<h1>세션관리하기</h1>
	<div>세션에 정보 저장하기 <input type="button" value="확인" onclick="saveSession();"></div>
	<div>세션에 정보 삭제하기 <input type="button" value="확인" onclick="removeSession('name');"></div>
	<div>세션에 정보 초기화하기 <input type="button" value="확인" onclick="initSession();"></div>
	
	<br/><hr/>
	
	<%
		// 세션에 저장된 데이터 (이름, 나이) 확인
		String name = null;
		String age = null;
		
		if(session.getAttribute("name") == null){
			name = "이름 없음";
		}
		else{
			name = (String)session.getAttribute("name");
			//getAttribute() 의 리턴 타입은 Object이므로 캐스팅 필요
		}
		
		if(session.getAttribute("age") == null){
			age = "나이 없음";
		}
		else{
			age = (String)session.getAttribute("age");
		}
				
		
	
	%>
	
	<h1>세션 확인하기</h1>
	<h3>세션에 저장된 이름 = <%=name %></h3>
	<h3>세션에 저장된 나이 = <%=age %></h3>
	
	
	
	
</body>
</html>

 

세션에 정보 저장

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	//세션에 데이터 저장하기
	session.setAttribute("name", "김씨");
	session.setAttribute("age", "20");
	
	response.sendRedirect("Ex07_01_session.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

세션에서 특정 속성(atrribute) 삭제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	String type = request.getParameter("type");

	session.removeAttribute(type);  // name 속성 삭제
	
	response.sendRedirect("Ex07_01_session.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 

세션 초기화

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	//세션의 모든 정보를 삭제 (초기화) 진행
	session.invalidate();

	response.sendRedirect("Ex07_01_session.jsp");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 

 

 

out

jsp 코드 작성은 복잡하다.

java 코드와 HTML 코드가 섞여있어서 그렇다.

out 객체는 출력을 조금이나마 더 쉽게 해준다.

 

<%@ 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>
	<h1>1~10 사이의 모든 정수 출력하기</h1>
	<%
		for(int i = 0; i< 11; i++){%>
			<%=i %>
		<%}%>
		
		<br>
		<br>
		
	<%
		for(int i = 1;i<11;i++){
			out.print(i);
			//jsp에서는 생성 없이 사용 가능하지만,
			//서블릿에서는 PrinWriter 객체 생성 후 사용
		}
		
	%>
	
	
	<br>
	<br>
	
	
	<h1>버퍼 정보</h1>
	버퍼 크기 : <%=out.getBufferSize() %><br>		<!-- 기본 값 8kb -->
	남은 크기 : <%=out.getRemaining() %><br>
	auto flush : <%=out.isAutoFlush() %><br>	<!-- 기본 값 true -->

</body>
</html>

 

 

버퍼 (buffer)

버퍼에 대해서 전에 배우긴 했지만 기억이 안나서 여기다가 다시 정리한다.

JSP에서 처리된 결과를 버퍼에 모아두고, 버터가 가득 차면 결과를 출력 후 버퍼를 비운다.

이와 같은 방식으로 데이터를 다루면 성능 향상, 출력 전 결과 수정 등이 가능해진다.