Front-end

JSP & Servlet DAY 4 ( 랜덤뽑기 실습, HttpServletResponse [ Redirect, forward ], 쿠키와 세션 )

도키마 2024. 7. 29. 14:18



 

 

 

 

오늘의 노래 추천 🎤

 

 
관객이 될게 (I stan U)
아티스트
아이유
앨범
The Winning
발매일
1970.01.01

 

 

 


 

 

 

 

 

 

 

 

 

 

 

 

DAY 4

 

 

 

 

 

 

 

 

 

 

ㅡ 랜덤뽑기 실습 ㅡ

Servlet 객체 생성부터 소멸 과정

 

<body align="center">
	<h1>랜덤 당첨 게임</h1>
	<form action="Ex03createInput.jsp">
		<fieldset>
			<legend>랜덤뽑기</legend>
			<table align="center">
				<tr>
					<td><input type="number" min="1" max="5" name="num"></td>
				</tr>
				<tr>
					<td><input type="submit" value="생성하기"></td>
				</tr>
			</table>
		</fieldset>
	</form>
</body>

 

<body align="center">

	<% int n = Integer.parseInt(request.getParameter("num")); %>

	<h1>랜덤 당첨 게임</h1>
	<form action="Ex03randomOutput.jsp">
		<fieldset>
			<legend>랜덤뽑기</legend>
			<table align="center">
				<tr>
					<td>주제</td>
					<td><input type="text" name="topic"></td>
				</tr>
					<% for(int i=1; i<=n; i++){%>
					<tr>
						<td>아이템</td>
						<td><input type="text" name="item"></td>
					</tr>
					<%} %>
				<tr>
					<td><input type="submit" value="랜덤뽑기"></td>
				</tr>
			</table>
		</fieldset>
	</form>
</body>

 

<body align="center">

	<% String topic = request.getParameter("topic"); %>
	<% String[] items = request.getParameterValues("item"); %>
	<% Random ran = new Random(); %>
	<% String ranItem = items[ran.nextInt(items.length)]; %>

	<h1>랜덤 당첨 게임</h1>
	<form action="Ex03randomOutput.jsp">
		<fieldset>
			<legend>랜덤뽑기결과</legend>
			<table align="center">
				<tr>
					<td><%=topic %></td>
				</tr>
				<tr>
					<td><%=ranItem %></td>
				</tr>
			</table>
		</fieldset>
	</form>
</body>

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅡ HttpServletResponse ㅡ

Servlet 객체 생성부터 소멸 과정

 

 

response.sendRedirect ()

ㅡ> 현재 실행중인 JSP 페이지의 실행을 중단하고 다른 웹 페이지가 대신 호출되는 기능

 

sendRedirect ()

<body>
	<% 
		System.out.print("re1");
		response.sendRedirect("http://www.naver.com");
		System.out.print("re2");
	%>
</body>

 

콘솔 결과

 

re1, re2 둘 다 실행

 

sendRedirect 과정

 

sendRedirect 는 요청과 응답이 2번

먼저 경로를 알려주고 두번째로 요청 경로로 연결해줌

 

 

 

 

ㅡ Redirect 선택 실습ㅡ

 

<body>
	<form action="Ex06moveURL.jsp">
		<select name="url">
			<option value="naver">네이버
			<option value="daum">다음
			<option value="google">구글
		</select>
		<input type="submit" value="제출">
	</form>
</body>

 

<body>
	<%
		String url = request.getParameter("url");
		if(url.equals("naver")){
			response.sendRedirect("https://www.naver.com");
		}else if(url.equals("daum")){
			response.sendRedirect("https://www.daum.com");
		}else if(url.equals("google")){
			response.sendRedirect("https://www.google.com");
		}
	%>
</body>

 

 

 

 

ㅡ Login jsp 실습ㅡ

 

<style>
	fieldset{
		border:1px dotted black;
		width: 300px;
	}
</style>
<body align="center">
	<form action="Ex07Login.jsp">
		<fieldset>
			<legend>로그인</legend>
			<table align="center">
				<tr>
				<td><input type="text" name="id" placeholder="아이디를 입력하세요"></td>
				</tr>
				<tr>
				<td><input type="password" name="pw" placeholder="비밀번호를 입력하세요"></td>
				</tr>
				<tr><td><input type="submit" value="LOGIN"></td></tr>
			</table>
		</fieldset>
	</form>
</body>

 

<body>
	<% 
	String id = request.getParameter("id");
	String pw = request.getParameter("pw"); 
		
	if(id.equals("smart") && pw.equals("123")){
		response.sendRedirect("Ex07LoginSuccess.jsp");
	}else {
		response.sendRedirect("Ex07LoginFail.jsp");
	}
	
	%>
</body>

 

 

 

 

 

 

 

foward

 

RequestDispatcher : 클라이언트로부터 최초의 요청을 원하는 자원으로 넘기는 메서드 등을 가짐

foward : 다음페이지로 request, response 를 넘기는 역할 ( 요청이 1번 )

 

<body>
	<% 
	String id = request.getParameter("id");
	String pw = request.getParameter("pw"); 
		
	if(id.equals("smart") && pw.equals("123")){
		//response.sendRedirect("Ex07LoginSuccess.jsp");
		// RequestDispatcher : 클라이언트로부터 최초에 들어온 요청을 원하는 자원으로 넘기는 메서드 등을 가짐
		RequestDispatcher rd = request.getRequestDispatcher("Ex07LoginSuccess.jsp");
		// forward : 다음페이지로 request, response 를 넘기는 역할
		rd.forward(request, response);
	}else {
		response.sendRedirect("Ex07LoginFail.jsp");
	}	
	%>
</body>

 

 

 

 

 

 

ㅡ sendRedirect 와 forward 의 차이ㅡ

 

sendRedirect
forward

 

* DB 에 변화가 생기는지 아닌지

 

 

 

 

 

 

 

 

ㅡ  쿠키(cookie)와 세션(session) ㅡ

 

 

 

 

 

연결을 계속 유지한다면 클라이언트가 늘어남에 따라 불필요한 서버자원 소모

 

쿠키 와 세션

 

 

 

 

 

 

 

 

 

ㅡ  쿠키(cookie) ㅡ

cookie : client (browser)에 저장되는 키와 값이 들어있는 작은 데이터 파일

 

cookie 동작 방식

 

 

 

 

 

Cookie cookie = new Cookie ( "test", "testCookie" )

 

ㅡ  쿠키 객체 생성,  만료 기간 설정, 클라이언트 응답 ㅡ

Cookie, setMaxAge, response.addCookie

쿠키 생성

 

1. 쿠키 객체 생성

2. 만료 기간 설정

3. 클라이언트로 쿠키 응답

 

 

 

 

ㅡ  쿠키 불러오기 name, value 출력 ㅡ

request.getCookie, for문

쿠키 확인

 

4. 생성된 쿠키 모두 가져오기

5. 각 쿠키의 name 과 value 확인

 

 

 

 

ㅡ  쿠키 삭제 ㅡ

setMaxAge, addCookie

쿠키 삭제

 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 



 

 

 

 

 

 

BYE