JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할

Slides:



Advertisements
Similar presentations
Term Project Hints Topics Keep-alive CGI Multi-thread Multi-process Event-based.
Advertisements

JSP 정리 레퍼런스: JSP 2.1 웹 프로그래밍 (최범균, 가메출판사). 목차 1. Directive - 인코딩 - 오류처리 2. Implicit Object - 쿠키/세션 3. Action Tag 4. JDBC/DBCP 프로그래밍, 파일업로드 5. Expression.
HTML + JavaScript UIT Series [Chapter 3] HTML 을 이용한 회원 정보 입력 양식 만들기.
XHTML Basic 제 13 장 1. XHTML Basic의 개요 2. XHTML Basic 기본 문법 3. 표 만들기
W3000 제 품 제 안 서.
11 JSTL 사용하기.
2002/3/20 HTML 2002/3/20
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
MySQL 연동 PHP 프로그래밍 기초 순천향대학교 정보기술공학부 이상정.
1 HTML5 개요.
Internet Computing KUT Youn-Hee Han
12장. JSP에서 자바빈 활용 제12장.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성
12 커스텀 액션.
11장 방명록 한빛미디어(주).
Project No 김현수 최종 작성일 :
2 서블릿의 기초.
9 표준 액션.
자바 서버 API와 서블릿 데이타베이스 실험실 이찬섭, 박용문.
9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용
10장. 에러 처리 제10장.
5 익셉션 처리.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 Bean을 이용한 회원가입 양식 작성하기
Chapter 04. 웹 보안 : 웹, 그 무한한 가능성과 함께 성장한 해킹
Web Server와 DB 연동.
이 름: 정홍도 (과장) 팀 명: 개발사업팀 일 자:
3 JSP의 기초.
7 JSP의 기초.
4 쿠키와 세션.
6장. JSP 지시문 (Directives) 제6장.
중 간 고 사 (웹프로그래밍)
학습목표 학습목차 Table 태그를 이용하여 표 만들기를 이해할 수 있습니다.
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
웹서버와 설치에 필요한 것 WWW ( world wide web ) TCP/IP 프로토콜을 이용하는 클라이언트/서버 환경
5. JSP의 내장객체1.
JSP Programming with a Workbook
11강. JSP 본격적으로 살펴보기-III request 객체의 이해 response 객체의 이해
[INA240] Web Programming Homework #3 [INA240] Web Programming
JSP와 자바 빈즈 JSP 빈즈 구조를 이해하고 활용한다. useBean 액션 활용법을 익힌다.
JSP 내장 객체 JSP에서 기본으로 사용할 수 있는 내장 객체 종류를 알아본다. 내장 객체별 주요 기능과 메서드를 이해한다.
4. JSP의 스크립트 요소 Script 요소의 이해 선언문(Declaration) Scirptlet 표현식 주석
9강. JSP 본격적으로 살펴보기-I JSP 태그의 개념 이해 JSP 동작 원리 JSP 내부 객체
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
7장 JSP페이지의 내장객체(Implicit Object)와 영역(Scope)
Cookie 와 Session.
BIZSIREN 실명확인서비스 개발 가이드 서울신용평가정보㈜ 신용조회부 (TEL , FAX )
HTML.
충북대학교 데이터베이스 & 정보시스템 연구실 정 태 성
10장. 자바빈(JavaBean) 이 장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다. 하나의 JSP페이지 안에 디자인부와 로직부가 혼재하게 되면 프로그램의 협업과 유지보수가 어렵다. 자바빈은 로직을.
이장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다
JavaScript COOKIE Chapter 10 Part III
Web Vulnerabilities 정보 보호 2008/05/31 Getroot.
CGI (Common Gateway Interface)
JSP Programming with a Workbook
상품등록 방식 비교 년 4월 23일 (주)에이치케이넷츠.
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
표현언어와 커스텀태그 표현 언어의 개념을 이해한다. JSP1.2 커스텀 태그 개발 방법을 익힌다.
KTF 무선인터넷 표준 UI 2000년 4월 SK 텔레콤 귀중 CP 제공용
Chapter13 파일 접근 & 오프라인 접근 HTML5 Programming.
CGI (Common Gateway Interface)
XSS (Cross Site Script)
7장. JSP페이지의 내장객체(Implicit Object)와 영역(Scope)
JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할
ASP 수행 화면(1).
컴퓨터 개론 √ 원리를 알면 IT가 맛있다 쉽게 배우는 컴퓨터 기본 원리 한빛미디어 교재출판부.
Chapter 08 : 서블릿 고급3. chapter 08 : 서블릿 고급3 학습목표 서블릿 속성과 Scope ServletContext HttpSession HttpServletRequest Filter API 요청 필터 응답 필터 url-pattern 8 가지.
세션 (Session) Yang-Sae Moon Department of Computer Science
JSP 빈즈 1.JSP 빈즈? JSP와 연동을 위해 만들어진 컴포넌트 클래스를 말한다. JSP 빈즈는 컨테이너에 위치하며, 데이터 처리와 공용화된 기능을 제공하기 때문에 빈즈를 잘 활용하면 프로그램의 중복을 줄이고 좀더 원할한 유지보수가 가능한다. 물론 , 모든 JSP를.
JSP Programming with a Workbook
Presentation transcript:

JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할 미리 선언되어 있는 클래스 인스턴스 이름으로 생각하면 쉬울 것이다. [ JSP 내장 객체] 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할 request javax.servlet.http.HttpServletRequest HTML Form 요소 선택 값과 같은 사용자 입력 정보를 읽어올대사용 response javax.servlet.http.HttpServleResponse 사용자 요청에 대한 응답을 처리할때 사용 pageContext javax.servlet.jsp.PageContext 현재 JSP 실행에 대한 context 정보를 참조하기 위해 사용 session javax.servlet.http.HttpSession 클라이언트 세션 정보를 처리하기 위해 사용 application javax.servlet.ServletContext 웹 서버의 애플리케이션 처리와 관련된 정보를 참조하기 위해 사용 out javax.servlet.jsp.JspWriter 사용자에게 전달하기 위한 output 스트림을 처리하기 위해 사용 config javax.servlet.ServletConfig 현재 JSP에 대한 초기화 환경을 처리하기 위해 사용 page javax.servlet.HttpJspPage 현재 JSP 페이지에 대한 클래스 정보 exception java.lang.Throwable 예외 처리를 위해 사용

Request request : HTML Form을 통해 전달되는 값을 가지고 올때 사용한다. 메서드 설명 javax.servlet.http.HttpServletRequest [request 주요 메서드] 메서드 설명 getParameterNames() 현재 요청에 포함된 인자 이름을 java.util.Enumeration 형태로 넘겨준다. getParameter(name) 문자열 name과 같은 이름을 가진 인자 값을 가지고 온다. getParameterValues(name) 문자열 name과 같은 이름을 가진 인자 값을 배열 형태로 가지고 온다. checbox, multiple list 등에 주로 사용한다. getCookies() 모든 쿠키 값을 java.servlet.http.Cookie의 배열 형태로 가지고 온다. getMethod() 현재 요청이 GET, POST인지 확인하여 가지고 온다. getSession() 현재 세션 객체를 가지고 온다. getRemoteAddr() 클라이언트 IP 주소를 알려준다. getProtocol() 현재 서버의 프로토콜을 문자열 형태로 알려준다. setCharacterEncoding() 현재 jsp로 전달되는 내용을 지정한 캐릭터셋으로 변환한다. html form에서 한글을 입력할 때 정상적으로 처리하려면 반드시 필요하다.

Request <HEAD> <script language=javascript> document.cookie = "test=OK"; </script> </HEAD> <BODY> <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> <input type=checkbox name=favorite value="사회">사회</input> <input type=checkbox name=favorite value="정보통신">정보통신</input> <tr><td colspan=2 align=center><input type=submit value="확인"> <input type=reset value="취소"></td> </form> </BODY> <%@ page contentType="text/html;charset=euc-kr" %> <% request.setCharacterEncoding("euc-kr"); %> <HTML> <HEAD> <TITLE> </TITLE></HEAD> <BODY> <center> <H2>request 테스트 결과 - 1</H2> <HR> <table border=1 cellspacing="1" cellpadding="5"> <tr> <td>이름</td> <td><%=request.getParameter("username")%> </td> <td>직업</td> <td><%=request.getParameter("job")%></td> <td>관심분야</td> <td> <% // getParameterValues 메서드를 이용해 "favorite" 로 설정된 form 의 체크박스 값들을 모두 읽어옴. String favorites[] = request.getParameterValues("favorite"); // 배열의 크기만큼 루프롤 돌면서 값을 출력함. for(int i=0; i<favorites.length;i++) { out.println(favorites[i]+"<BR>"); } %> </table> <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> </BODY> </HTML>

Response response : 사용자 요청에 대한 응답을 처리하기 위한 javax.servlet.http.HttpServletResponse 객체에 대한 참조 변수다. [response 주요 메서드] 메서드 설명 setContentType(type) 문자열 형태의 type에 저장된 MIME Type으로 ContentType을 설정한다. setHeader(name,value) 문자열 name의 이름으로 문자열 value의 값을 헤더로 셋팅한다. setDateHeader(name,date) 문자열 name의 이름으로 date에 설정된 밀리세컨드 시간 값을 헤더에 설정한다. sendError(status.msg) 오류 코드를 세팅하고 메시지를 보낸다. sendRedirect(url) 클라이언트 요청을 다른 페이지로 보낸다. [response.sendRedirect()와 forward 액션의 차이] response.sendRedirect() 메서드는 현재 페이지를 다른 페이지로 전환하는 것으로써 어떻게 보면 forward 액션과 매우 유사하다고 볼 수 있다. 그러나 둘 사이에는 큰차이가 있다. response.sendRedirect() 메서드는 현재 페이지로의 요청을 단순하게 다른 URL로 전환하는 역할만 하므로 현재 페이지로 전달된 request나 response정보는 새로운 URL로 전달되지 않는다. 반면 forward 액션은 현재 페이지로 전달된 request와 response 를 새로운 페이지에 전달하여 좀더 다양한 활용이 가능하다. 이 밖에도 response.sendRedirect() 메서드는 URL 형태면 모두 전환이 가능하지만 , forward 액션은 반드시 같은 웹 애플리케이션에 포함된 파일이여야 하는 차이점이 있다.

Response [page_control.jsp] [forward_action2.jsp] <%@ page contentType="text/html;charset=euc-kr" %> <HTML> <HEAD><TITLE> </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> </BODY> </HTML> <% request.setCharacterEncoding("euc-kr"); %> <jsp:forward page="page_control_end.jsp"> <jsp:param name="tel" value="000-000-0000" /> </jsp:forward> [response_sendRedirect.jsp] <% response.sendRedirect("page_control_end.jsp"); %> form 두개를 갖고 있다. 하나는 forward 액션방식 jsp를 호출하고 다른하나는 sendRedirect 메서드를 사용하는 jsp 파일을 호출하는 것이다. [page_control_end.jsp] <%@ page contentType="text/html;charset=euc-kr" %> <HTML> <HEAD><TITLE> </TITLE></HEAD> <BODY> Copyright (c) 2000 - 2002 JSP BOOK. All rights reserved <HR> <%= request.getParameter("username") %> <BR> <%= request.getParameter("tel") %> </BODY> </HTML>

Out out : 스크립트릿에서 출력하는데 사용한다. 메서드 설명 getBufferSize() javax.servlet.jsp.JspWriter 메서드 설명 getBufferSize() output buffer의 크기를 바이트로 알려준다. getRemaining() 남아있는 버퍼의 크기 중 사용 가능한 비율을 알려준다. clearBuffer() 버퍼에 있는 컨텐츠를 모두 지운다. flush() 버퍼를 비우고 output stream도 비운다. close() output stream을 닫고 버퍼를 비운다. println(content) content에 내용을 newline과 함계 출력한다. print(content) content에 내용을 출력한다. <%@ page contentType="text/html;charset=euc-kr" %> <HTML> <HEAD><TITLE> </TITLE></HEAD> <BODY> <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> </BODY> </HTML>

Session 메서드 설명 getId() 각 접속에 대한 세션 고유의 ID를 문자열 형태로 반환한다. 정보 │ └┌쿠키(Cookie) : pc에 보관 하는 방식 │ └서버에 부화를 주린다. └세션(Session) : 서버에 보관하는 방식 └┌보안에 유리 └제약사항이 적다 세션 사용 │┌사용자 로그인 후 세션을 설정하고 일정 시간이 지난 경우 다시 사용자 인증을 요구할 때 └├쇼핑몰에서 장바구니 기능을 구현할 때 └사용자가 어떤 페이즈를 다녀갔는지 등 웹페이지 트래킹 기능을 구현 할때 [세션 주요 메소드] 메서드 설명 getId() 각 접속에 대한 세션 고유의 ID를 문자열 형태로 반환한다. getCreatingTime() 세션이 생성된 시간을 January 1, 1970 GMT,부터 long형 밀리세컨드 값으로 반환한다. getLastAccessedTime() 현재 세션으로 마지막 작업한 시간을 long형 밀리세컨드 값으로 변환다. getMaxInactiveInterval() 세션 유지 시간을 초로 반환한다. 즉 세션 유호 시간을 알 수 있다. setMaxInactiveInterval(t) 세션 유효 시간을 t에 설정된 초 값으로 설정한다. invalidate() 현재 세션을 종료한다. 세션과 관련한 값을 모두 지운다. getAttribute(attr) 문자열 attr로 설정된 세션 값을 java.lang.Object 형태로 반환한다. setAttibute(name,attr) 문자열 name으로 java.lang.Object attr을 설정한다.

Session <%@ page contentType="text/html;charset=euc-kr" %> <HEAD><TITLE> </TITLE></HEAD> <BODY> <center> <H2>session 예제 </H2> <HR> <% // isNew() 메서드를 이용해 최초세션설정을 확인하고 있다. if(session.isNew()) { out.println("<script> alert('세션이 해제되어 다시설정합니다.') </script>"); session.setAttribute("login","ok"); } %> 1. 세션 ID : <%= session.getId() %> <BR> 2. 세션 유지시간 : <%= session.getMaxInactiveInterval() %> <BR> 3. login 세션의 설정값 : <%= session.getAttribute("login") %> <BR> </form> </BODY> </HTML>

Application 메서드 설명 getServerInfo() JSP/서블릿 컨테이너 이름과 버전을 반환한다. application은 javax.servlet.ServerletContext 객체에 대한 참조 변수로 config 개체로 생성한다. ServletContext 객체는 컨테이너와 관련된 여러 정보를 제공하며 application 참조 변수를 통해서 서블릿이 실행되는 환경이나 서버 자원과 관련한 정보를 얻거나 로그 파일 기록하는 작업을 수행한다. [개발자를 위한 서버 정보] 메서드 설명 getServerInfo() JSP/서블릿 컨테이너 이름과 버전을 반환한다. getMajorVersion() 컨테이너가 지원하는 서블릿 API의 Major 버전 정보를 반환한다. getMinorVersion() 컨테이너가 지원하는 버블릿 APId의 Minor 버전 정보를 반환한다. [사버 지원 정보] 메서드 설명 getMimeType(filename) 문자열 filename에 지정된 파일에 대한 MIME type을 반환한다. getResource(path) 문자열 path에 지정된 자원을 URL 객체로 반환한다. getResourceAsStream(path) 문자열 path에 지정된 자원을 InputStream 객체로 반환한다. getRealPath(path) 문자열 path에 지정된 자원을 파일시스템의 실제 경로로 반환한다. getContext(path) 문자열 path에 지정된 자원의 컨텍스트 정보를 반환한다. getResourceDispatcher(path) 문자열 path에 지정된 자원을 위한 request dispatcher를 생성한다.

Application 메서드 설명 log(message) [로그 관련 정보] 메서드 설명 log(message) message 내용을 로그 파일에 기록한다. 로그 파일 위치는 컨테이너에 따라 다르다. log(message,exception) 예외 사황과 관련한 정보를 포함하여 로그 파일에 기록한다. [속성 관련 정보] 메서드 설명 getAttribute(String name) 문자열 name에 해당하는 속성 값이 있다면 Object 형태로 가져온다. 반환 값에 대한 적절한 형변환이 필요하다. getAttributeNames() 현재 application 객체에 저장된 속성 이름을 Enumeration 형태로 가져온다. setAttribute (String name, Object value) 문자열 name 이름으로 Object형 데이터를 저장한다. Object형이므로 자바 클래스 형태로도 저장할 수 있다. removeAttribute(String name) 문자열 name에 해당하는 속성을 삭제한다.

Application [application.jsp] [application_result.jsp] <%@ page contentType="text/html;charset=euc-kr" import="java.io.*" %> <HTML> <HEAD><TITLE> </TITLE></HEAD> <BODY> <center> <H2>application 예제</H2> <HR> 1. 서버정보 : <%= application.getServerInfo() %> <BR> 2. 서블릿 API 버전정보 : <%= application.getMajorVersion() +"."+application.getMinorVersion() %> <BR> 3. application.jsp 화일의 실제경로 : <%= application.getRealPath("application.jsp") %> <BR> setAttribute 로 username 변수에 "홍길동" 설정<P> <% application.setAttribute("username","홍길동"); application.log("username=홍길동"); <a href="application_result.jsp">확인하기</a> </center> </BODY> </HTML> <%@ page contentType="text/html;charset=euc-kr" import="java.io.*" %> <HTML> <HEAD><TITLE> </TITLE></HEAD> <BODY> <center> <H2>application 예제</H2> <HR> username 에 설정된 값은 : <%= application.getAttribute("username") %> </center> </BODY> </HTML>

Config 메서드 설명 getInitParameterNames() javax.servlet.ServletConfig 객체에 저장한다. 이때 설정되는 초기화 정보는 소스에 노출되지 않는데, 수시로 변경되는 공통된 정보 들을 설정할 때 사용한다. [config 주요 메서드] 메서드 설명 getInitParameterNames() 초기 파라미터 값들의 설정 이름을 Enumeration 객체로 리턴한다. getInitParameter(name) 문자열 name에 해당하는 초기화 파라미터 값을 리턴한다. page는 JSP 컨테이너에서 생성된 버블릿 인스턴스 객체를 참조하는 레퍼런스 변수며, JSP 에서 자기 자신을 참조할 떄 사용된다.

PageContext pageContext는 javax.servlet.jsp.PageContext 인스턴스에 대한 참조 변수로, 다른 모든 내장 객체에 대한 프로그램적인 접근 방법을 제공하며 HTTP 요청을 처리하는 제어권을 다른 페이지로 넘길때 사용한다. [내장 객체 참조 관련 메소드] 메서드 설명 getPage() 현재 페이지의 생성된 서블릿 인스턴스인 page 내장 객체를 반환한다. getRequest() 현재 페이지의 클라이언트 요청 벙보를 갖고 있는 request 내장 객체를 반환한다. getResponse() 현재 페이지의 클라이언트 응답 정보를 가지고 있는 response 내장 객체를 반환한다. getOut() 현재 페이지의 output stream인 out 내장 객체를 반환한다. getSession() 현재 페이지의 session 내장 객체를 반환한다. getServletConfig() 현재 페이지의 config 내장 객체를 반환한다. getServletContext() 현재 페이지의 서블릿 컨텍스트(application 내장 객체)를 반환한다. getException() 오류 페이지, 즉 page 지시어에서 errorPage 속성을 지정한 페이지에서 오류가 발생할 때 발생한 예외 벙보 exception 내장 객체를 반환한다.

PageContext 메서드 설명 forward(path) 문자열 path에 지정된 페이지로 포워딩한다. [페이지 전달 관련 메소드] 메서드 설명 forward(path) 문자열 path에 지정된 페이지로 포워딩한다. include(path) 문자열 path에 지정된 페이지를 포함시킨다. forward()메서드는 앞에서 사렾본 forward 액션과 동일한 기능을 한다. ■ forward() 메서드 사용 pageContext.forward(“HelloWorld.jsp”); ■ forward 액션 사용 <jsp: forwqrd page=“HelloWorld.jsp” /> include() 메서드는 액션의 include와 동일한 기능을 한다. ■ include() 메서드 사용 <% out.flush(); pageContext.include(“HelloWorld.jsp”); %> ■ include 액션 사용 <jsp: include page = “HelloWorld.jsp” flush=true />

Exception exception은 page 지시어에서 오류 페이지로 지정된 JSP 페이지에서 예외가 발생할 때 전달되는 java.lang.Throwable의 인스턴스에 대한 참조 변수다. 대표적인 메서든 다음 과 같다. [예외 관련 메서드] 메서드 설명 getMessage() 문자열로 된 오류 메시지를 반환한다. printStackTrace() 표준 출력 스트림으로 스택 추적 정보를 출력한다. toString() 예외 클래스 이름과 함께 오류 메시지를 반환한다. <%@ page contentType="text/html;charset=euc-kr" isErrorPage="true" %> <center> <H2>처리중 문제가 발생했습니다</H2> <HR> <table> <tr width=100% bgcolor="pink"><td> 관리자에게 문의해 주세요..<BR> 빠른시일내 복구하겠습니다. <%= exception%> </td> </tr> </table> </center> <%@ page contentType="text/html;charset=euc-kr" errorPage="error.jsp"%> <HTML> <HEAD><TITLE>Error Test</TITLE></HEAD> <BODY><H2>Error 테스트 페이지</H2> <%= 5/0 %> </BODY> </HTML>