Scroll indicator done
728x90

[자바 애플릿]

- 웹 브라우저 내에서 수행되는 자바 프로그램

- main() 없음

- Applet 클래스로부터 상속받아야 함 (항상 public)

- init, start, paint, stop, destroy, update

 

# HTML에서 애플릿으로 파라미터 전달

- 애플릿 getParameter() 메소드

- HTML 에서는 파라미터를 전달하기 위해 <param name="변수이름" value="변수값"> 문장을 기술

      ※ 자바 프로그램 내에서 사용되는 변수의 이름과 HTML의 name 부분이 동일해야 함

 

# 애플릿 함수 실행되는 순서


[JSP 내장객체] 

Servlet, JSP, JDBC

 

# JSP 내장객체

- JSP 내에서 선언하지 않고 사용할 수 있는 객체

- 구조적으로 JSP가 서블릿 형태로 자동 변환된 코드 내에 포함되어 있는 멤버 변수, 메서드 매개변수 등 각종 참조 변수(객체)를 말함

- request, response, pageContext, session, application, out, config, page, exception

request : HTML 폼 요소의 선택 값 등 사용자의 입력 정보를 읽으려고 사용

response : 사용자 요청에 대한 응답을 처리하려고 사용

pageContext : 현재 JSP 실행에 대한 context 정보를 참조하려고 사용

session : 클라이언트의 세션 정보를 처리하려고 사용

application : 웹 서버의 애플리케이션 처리와 관련된 정보를 참조하려고 사용, 자료를 공유할 때도 사용

out : 사용자에게 전달하기 위한 output 스트림을 처리하려고 사용

config : 현재 JSP의 초기화 환경을 처리하려고 사용

page : 현재 JSP의 클래스 정보를 보려고 사용

exception : 예외 처리를 하려고 사용

 

# JSP 내장 객체의 구조적 특징

서블릿으로 변경된 JSP 코드는 모두 _jspService() 메서드에 위치

 

- page, request, session, application 내장 객체를 이용한 속성 관리 기법

- setAttribute, getAttribute()로 생명 주기를 다룸

 

# request 

- javax.servlet.http.HttpServletRequest 클래스에 대한 참조 변수

- 브라우저에서 서버로 전달되는 정보를 처리하기 위해 사용

checkbox -> 다중 선택 가능, 값을 getParameterValues에서 배열로 전달

 

# 서블릿 구조와 생명주기

GET 방식 >

- 서버에 있는 정보를 클라이언트로 가져오기 위한 방법

      ex. HTML 이나 이미지 등을 웹 브라우저에서 보기 위한 요청

- 최대 240 Byte 까지 데이터 전달 가능

- 서버에서 QUERY_STRING을 통해 전달됨. '속성-값' 형태, '&'는 여러 속성 값을 전달할 때 연결해주는 문자열

 

POST 방식 >

- 서버로 정보를 올리기 위해 설계된 방법

      ex. HTML 폼에 입력한 내용을 서버에 전달하기  위한 요청

- 데이터 크기 제한 X

- URL에 매개변수가 노출되지 않음

 

[실습1] request 테스트 폼

- request_form.html

<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>ch06 : request_form.html</TITLE>
<script>
	document.cookie = "test=OK.";
</script>

</HEAD>
<BODY>
<div align=center>
<H2>request  테스트 폼 </H2>
<HR>
<form name=form1 method=post action=request_result.jsp>
<table border=1 cellspacing="1" cellpadding="5">
<tr>
<td>이름</td>
<td><input type=text size=10 name=username></td> 
<tr>
<td>직업</td>
<td>
<select name=job >
	<option selected>무직</option>
	<option>회사원</option>
	<option>전문직</option>
	<option>학생</option>
</select>
</td>
<tr>
<td>관심분야</td>
<td>
<input type=checkbox name=favorite value="정치">정치
<input type=checkbox name=favorite value="사회">사회
<input type=checkbox name=favorite value="정보통신">정보통신

<tr><td colspan=2 align=center><input type=submit value="확인"><input type=reset value="취소"></td></tr>
</table>

</form>
</div>
</BODY>
</HTML>

- request_result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% request.setCharacterEncoding("UTF-8"); %>

<HTML>
<HEAD>
<TITLE>ch06 : request_result.jsp</TITLE></HEAD>
<BODY>
<div align="center">
<H2>request  테스트 결과 - 1</H2>

<HR> 
<table border=1 cellspacing="1" cellpadding="5">
<tr>
<td>이름</td>
<td><%=request.getParameter("username")%> </td>
<tr>
<td>직업</td>
<td><%=request.getParameter("job")%></td>
<tr>
<td>관심분야</td>
<td>
<%
	// getParameterValues 메서드를 이용해 "favorite" 로 설정된 form 의 체크박스 값들을 모두 읽어옴.
	String favorites[] = request.getParameterValues("favorite");
/*
	// 배열의 크기만큼 루프롤 돌면서 값을 출력함.
	for(int i=0; i<favorites.length;i++) {
		out.println(favorites[i]+"<BR>");
	}
*/
	// java 5.0 코드
	for(String favorite: favorites) {
		out.println(favorite+"<BR>");
	}		
%>
</table>
<HR>
<H2>request  테스트 결과 - 2</H2>
<table border=0><tr><td>
1. 클라이언트 IP 주소 : <%= request.getRemoteAddr() %> <BR>
2. 요청 메서드 : <%= request.getMethod() %> <BR>
<%
	Cookie cookie[] = request.getCookies();
%>
3. <%= cookie[0].getName() %> 에 설정된 쿠키값 : <%=cookie[0].getValue() %><BR>
4. 프로토콜 : <%= request.getProtocol() %>
</td></tr>
</table>
 </div>
</BODY>
</HTML>

<script>
document.cookie = "test=OK.";
</script>

"myname=SSENI" 로 저장하고 실행하면 

<% Cookie cookie[] = request.getCookies(); %>

<%= cookie[0].getName() %> 에 설정된 쿠키값 : <%=cookie[0].getValue() %>

Cookie : "test=OK" 하나만 저장되어 있음

 

ch06: request_form.html / request_result.jsp

 

# response 내장객체

- request와 반대되는 개념, 사용자 응답과 관련된 기능을 제공

- 사용자 요청(request)를 처리하고 응답을 다른 페이지로 전달

[실습2] forward 액션, sendRedirect 테스트

- page_control.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>ch06 : page_control.jsp</TITLE></HEAD>
<BODY>
<H2>forward, sendRedirect 테스트</H2>
<HR>
<form method=post action=forward_action2.jsp>
	forward action : <input type=text name=username>
	<input type=submit value="확인">
</form>

<form method=post action=response_sendRedirect.jsp>
	response.sendRedirect : <input type=text name=username>
	<input type=submit value="확인">
</form>
</BODY>
</HTML>

- page_control_end.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><TITLE>ch06 : page_control_end.jsp</TITLE></HEAD>
<BODY>
<div align="center">
<H2>forward action 및 sendRedirect() 결과</H2>
<HR>
 지금 보이는 화면은 page_control_end.jsp 에서 출력한 결과 입니다.
<HR>
이름 : <%= request.getParameter("username") %> <BR>
전화번호 : <%= request.getParameter("tel") %>
</div>
</BODY>
</HTML>

- response_sendRedirect.jsp

<% response.sendRedirect("page_control_end.jsp"); %>

- forward_action2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<% request.setCharacterEncoding("UTF-8"); %>
    
<jsp:forward page="page_control_end.jsp">
	<jsp:param name="tel" value="000-000-0000" />
</jsp:forward>

http://localhost:8088/jspbook/ch06/forward_action2.jsp
http://localhost:8088/jspbook/ch06/page_control_end.jsp

- forward 액션은 최종적으로 전달되는 페이지 파라미터 HTML 폼 입력값 등을 함께 전달

- sendRedirect()는 단순히 지정된 페이지로 최종 화면이 이동됨

forward : 브라우저 URL에 최초 요청된 페이지 URL

sendRedirect : 최종 전달된 페이지의 URL이 표시됨

 

# out 내장객체

- 출력 스트림, 사용자 웹 브라우저로 출력하기 위한 내장 객체

- 스크립트릿에서 브라우저로 텍스트를 출력하는 데 사용

- 서버 콘솔이 아닌 사용자에게 전달 (브라우저로 전달)

 

[실습3] out 내장객체 - 버퍼 크기 출력

- out.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>ch06 : out.jsp</TITLE></HEAD>
<BODY>
<div align="center">
<H2> out 내장객체의 사용 </H2>
<HR>
1. 설정된 버퍼크기 : <%= out.getBufferSize() %> <BR>
2. 남아있는 버퍼크기 : <%= out.getRemaining() %> <BR>
<% out.flush(); %>
3. flush 후 남아있는 버퍼크기 : <%= out.getRemaining() %> <BR>
<% out.clear(); %>
4. clear 후 남아있는 버퍼크기 : <%= out.getRemaining() %> <BR>
<% out.close(); %>
5. close 후 남아있는 버퍼크기 : <%= out.getRemaining() %> <BR>

</div>
</BODY>
</HTML>

- clear 후 버퍼크기는 아예 보여지지 않음

 

# session 내장객체

-HTTP 프로토콜이 비연결형 프로토콜이기 때문에 한 페이지가 출력된 다음에는 클라이언트와 서버의 연결이 끊어짐 

i) 페이지를 이동해도 보관해야 할 정보가 있다면 ? CookieSession으로 해결

 

- ssesion 은 접속하는 사용자별로 따로 생성되고 일정시간 유지 후 소멸

- setAttribute() 메서드를 이용해 임의의 값을 저장해놓고 활용할 수 있음

세션이 주로 사용되는 경우 >

1. 사용자 로그인 후 세션을 설정하고 일정시간이 지난 경우 다시 사용자 인증을 요구할 때

2. 쇼핑몰에서 장바구니 기능을 구현할 때

3. 사용자의 페이지 이동 동선 등 웹 페이지 트래킹 분석 기능 등을 구현할 때

 

[실습4] session 내장객체 활용

- ssesion.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><TITLE>ch06 :session.jsp</TITLE></HEAD>
<BODY>
<div align="center">
<H2>session 예제 </H2>
<HR>
<% // 스크립트릿
	// isNew()  메서드를 이용해 최초세션설정을 확인하고 있다.
	if(session.isNew()) { // 세션이 새로 만들어졌다면
		out.println("<script> alert('세션이 해제되어 다시설정합니다.') </script>");
		session.setAttribute("login","홍길동"); 
	}
%>
# <%= session.getAttribute("login") %> 님 환영 합니다.!!!!<BR>
1. 세션 ID : <%= session.getId() %> <BR>
2. 세션 유지시간 : <%= session.getMaxInactiveInterval() %> <BR>

</div>
</BODY>
</HTML>

 

728x90