2019년 7월 3일 수요일

[강좌]옛날강좌들-JSP기초강좌

JSP 기초강좌


강좌 정보

  • 2002년
  • 총 20 강

강사 정보


약어들

  1. GPL 라이센스에 대해 조사
  2. MariaDB에 대한 사용을 고려 해 보자
  3. LGPL

01강. JSP의 특징

  • HTML의 한계
  • 정적인 페이지만을 보여줌
  • DB 연동 불가
  • 지속적인 연결이 되지 않음.(HTML 1.x)
  • CGI의 활용과 한계
  • DB 연동 가능
  • 동적인 페이지 작성 가능
  • 사용자 요청에 대해서 각각의 프로세스를 생성
  • 접속자가 많을 수록 메모리를 많이 사용하여 서버에 부담을 증가
  • 서블릿의 활용과 한계
  • Java 기반으로 작성됨. 풍부한 API를 사용가능, 객체 지향적으로 작성
  • 멀티쓰레드 방식 사용됨.
  • 표현부와 구현부가 분리되지 않음.
  • JSP의 장점
  • Java 장점 사용 가능
  • 서블릿과 기본적으로 동일함.
  • 표현부와 구현부가 분리할수 있음.

02강. JSP의 환경설정

  • JDK 설치
  • Tomcat 설치 - JSP container

JSP를 사용하기 위한 도구들

  • Web Server
  • Java 환경 - JDK
  • JSP 컨테이너
  • 문서 편집기

JDK 설치

  • PATH 설정
  • 환경변수 설정
  • 간단한 예제를 통해 설치 여부 확인

현재 오라클 11도 8080 포트를 점유 하고 있음. 그러므로 다른 포트 번호로 설치 해야 한다.


03강. JSP의 작동방식

JSP 작동 원리

  • JSP 페이지 요청
  • 해당 페이지의 서블릿 존재 여부 검사
  • 해당 페이지의 응답 객체를 생성
  • 서블릿이 없는 경우 해당 페이지에 대한 서블릿을 생성
  • 특정 폴더에 서블릿을 저장
  • 같은 페이지 요청 시 메모리 상의 서블릿을 실행시켜 응답 객체를 생성

간단한 예제를 통한 확인

  • Hello.jsp 페이지 작성
  • 웹 사이트의 ROOT 폴더에 저장
  • localhost:8080(9080) 포트로 접속
  • 실행된 화면을 확인 후 서블릿이 저장되는 WORK 폴더에 가서 서블릿을 확인

04강. 스크립트1

JSP 스크립트 1

  • 선언부
  • 표현식
  • 스크립트릿

선언부

  • 형식
    <%!
     //변수 또는 메소드 정의 하는 문장
    %>
  • 사용예
    <%!
     private int num=0;
    %>

표현식

  • 형식
    <%=
     //변수, 메소드의 반환값, 객체
    %>
  • 사용예
    <%=num%>

스크립트릿

  • 형식
    <%
    // 선언분와 표현식을 제외 모든 문장
    %>
  • 사용예
    <%
    for(int i= 0; i < 5 ; i++){
    %>
    //여기 문장도 반복한다.
    <%
    }
    %>


05강. 스크립트2

조건문과 반복문

  • if 문
  • if(조건식) 실행코드
    else if
    else
  • switch case 문
  • for 문
  • while 문
  • do while 문

예외 처리

  • try - catch - finally

주석 처리

  • <!-- 내용 주석 -->
  • <%-- JSP 주석 --> : JSP 파일에서만 보인다.
  • <%
    // 스크립트 주석 -- 서블릿 파일에서 보인다.
    /*
     다중 행 주석
     */
    %>

06강. 디렉티브1

페이지 디렉티브(Page Directive)

  • 정의 : 해당 JSP 페이지와 관련된 정보를 나타낼 때 쓰는 태그
  • 형식
    <%@ 디렉티브 속성1=”값1” 속성2=”2” … %>
  • 디렉티브의 종류
  • page - 해당 페이지의 전체적인 특성을 나타냄
  • include - 다른 페이지를 포함하고자 할 때 사용
  • taglib - 기능 확장을 위해 사용할 커스텀 태그의 경로를 지정할 때 사용

Page 디렉티브 유형

속성

기본값

language

스크립트 언어이름

“java”

contentType

MIME 타입, 문자셋

“text/html”

“text/html,charset=utf-8”

info

문자열

import

클래스 또는 패키지 이름

session

boolean 값

“true”

buffer

버퍼의 크기 또는 false

“8kb”

autoFlush

boolean 값

- 버퍼가 가득 차을

“true”

isThreadSafe

boolean 값

- 해당 페이지가 쓰레드 안정성 여부

“true”

errorPage

로컬 URL

isErrorPage

boolean 값

“false”

extends

클래스 이름

- 자동으로 지정해줌

pageEncoding

패키지의 Character 인코딩

- euc-kr, utf-8

- 문자셋과 기능이 동일함.

“ISO-8859-1”


07강. 디렉티브2

include 디렉티브

  • 중복되는 페이지를 삽입할 때 사용함.
  • 형식
    <%@ include file=”포함할 페이지의 로컬 URL” %>

taglib 디렉티브


08강. 기본객체1

기본 객체의 종류

객체명

클래스 또는 인터페이스

설명

request

javax.servlet.ServletRequest

요청 객체(요청 파라미터 포함)

response

javax.servlet.ServeltResponse

응답 객체

out

javax.servlet.jsp.JspWriter

출력 스트림에 내용을 출력하는 객체

page

java.lang.Object

현재 요청을 처리하는 페이지 객체

- 페이지 자기 자신

config

javax.servlet.ServletConfig

JSP 페이지의 ServletConfig 객체

session

javax.servlet.http.HttpSession

세션 객체

application

javax.servlet.ServletContext

서블릿의 config 객체로 부터 구할 수 있는

서블릿 Context(전체 사이트 공유 가능)

pageContext

javax.servlet.jsp.PageContext

현재 JSP 페이지의 Context

exception

java.lang.Throwable

에러 페이지에서 사용되는 예외 객체

기본 객체가 사용하는 메소드

메소드

설명

void setAttribute(key,value)

키값이 key인 객체 value를 저장

Object getAttribute(key)

키값이 key인 객체를 읽어 들인다.

void removeAttribute(key)

삭제

Enumeration getAttributeNames()

모든 속성의 이름을 가져온다.

request 기본객체

  • 자신의 페이지로의 요청 정보 접근
  • URL
  • 헤더내용
  • 쿠기
  • 요청 파라미터
  • 메소드들
  • getParameterName() : 모든 파라미터의 이름을 구함.
  • getParameter(String name) : 해당 이름을 가진 파라미터 중 첫 번째 파라미터 값을 구함.
  • getParameterValues(String name)
  • 지정한 이름을 가진 파라미터의 모든 값을 String[]로 구한다.
  • getMethod() : 요청 방식
  • getRequestURI() : 요청한 URI
  • getProtocol() : 프로토콜
  • getServletPath() : 요청한 서블릿 경로
  • getQueryString() : Query 문자열
  • getServerName() : 서버 이름
  • getServerPort() : 서버 포트 번호
  • getRemoteAddr() : 서버의 주소
  • getAuthType() : 인증 스키마
  • getLocale() : 로케일
  • getHeader(name) : 주어진 이름에 해당하는 header 속성값

response 기본 객체

  • 응답 객체
  • 헤더, 쿠기, 응답과 관련된 정보를 설정 할 수 있는 메소드 제공
  • 응답을 통해서 전송되는 내용의 형식을 지정하는 메소드(MIME 타입 지정)

response가 제공하는 메소드들

메소드

설명

addCookie(Cookie)

응답에 쿠키를 저장

setHeader(name,value)

헤더를 저장

addHeader(name,value)

헤더를 추가

setContentType(String)

MIME 타입을 지정하며 추가로 encoding 타입 지정

getCharacterEncoding()

문자열 인코딩을 구함

encodeRedirectURL(url)

sendRedirect() 메소드에서 사용할 URL을 인코딩

encodeURL(name)

링크에서 사용할 URL을 인코딩

sendRedirect(url)

지정한 URL을 사용하여 리다이렉트 응답을 보냄

out 기본객체

  • 출력을 담당하는 객체
  • JspWriter의 인스턴스

out이 제공하는 메소드들

메소드

설명

newLine()

줄 구분자를 출력

print(<테이터 유형>)

해당 데이터 유형의 문자열 형식을 출력

println(<테이터 유형>)

출력하고 줄 구분자도 출력

page 기본객체

  • 해당 jsp 페이지가 변환된 서블릿 그 자체를 나타내는 객체
  • 페이지의 정보를 나타내는 getServletInfo() 메소드 제공

config 기본객체

  • jsp 페이지를 초기화 할때 사용되는 초기화 파라미터를 저장
  • 서블릿을 변환할 때 처리하는 서블릿의 이름은 JSP 임(*중요)

 

09강. 기본객체2

session 기본 객체

  • 사이트에 접속한 클라이언트가 계속 유지할 수 있는 정보를 담는 객체
  • javax.servlet.http.HttpSession 인터페이스의 인스턴스

session이 제공하는 메소드

메소드

설명

getId()

클라이언트마다 주어지는 고유한 세션ID

getCreationTime()

세션 생성 시간을 long형으로 구함

getLastAccessedTime()

마지막 요청을 받은 시간을 초 단위로 구함

getMaxInactiveInterval()

두 요청간의 세션 유지 최대 시간을 초 단위로 구한다.

setMaxInactiveInterval(t)

두 요청간의 세션 유지 최대 시간을 초 단위로 설정한다

isNew()

세션 ID를 생성해서 리턴한다

invalidate()

세션을 버리고 속성에 저장된 객체를 모두 풀어 준다.

application 기본객체

  • 해당 application 전체(사이트)에서 사용할 수 있는 정보를 저장하는 객체
  • 예) 카운트
  • 서블릿 콘텍스트와 같은 개념이며 전체 사이트의 정보를 저장함
  • javax.servlet.ServletContext 인터페이스의 인스턴스

application이 제공하는 메소드

메소드

설명

getServerInfo()

서블릿 콘테이너의 이름과 버젼을 구한다.

getMajorVersion()

서블릿 콘테이너의 메이저 버젼을 구한다.

getMinorVersion()

서블릿 콘테이너의 마이너 버젼을 구한다.

pageContext 기본객체

  • 현재 jsp 페이지의 콘텍스트를 나타냄
  • * 다른 기본 객체에 접근할 수 있는 메소드를 제공

<%
 HttpSession httpSession = pageContext.getSession();
%>

  • 제어를 이동하거나 포함할 수 있는 메소드를 제공
  • forward(path);
  • include(path);

exception 기본객체

  • JSP에서 발생하는 예외를 나타냄
  • 디렉티브의 isErrorPage 속성이 true인 페이지에서만 접근 가능
  • <%@ page isErrorPage=”true” %>
  • Java.lang.Throwable 클래스를 상속받은 클래스의 인스턴스

 

10강. JSP 액션 태그

빈 관련 태그

  • <jsp:useBean>
  • jsp 페이지에서 자바의 빈을 사용하고자 할 때 사용
  • <jsp:setProperty>
  • 빈의 정의된 property의 값을 설정할때 사용
  • <jsp:getProperty>
  • 빈의 정의된 property의 값을 가져올때 사용

<jsp:include> 액션 태그

  • 형식
    <jsp:include page=”로컬URL” flush=”true|false”/>
  • 다른 문서의 출력결과를 현재 페이지에 포함하고자 할 때 사용
  • 디렉티브의 include와 차이점은 제어권
  • include 디렉티브와는 달리 포함되는 페이지도 또 하나의 페이지로 해석되어 존재
  • 포함하는 페이지와 포함되는 페이지는 서로 다른 pageContext 객체를 가짐

<jsp:forward> 액션 태그

  • 형식
    <jsp:forward page=”로컬URL”/>
  • 현재 페이지에서 다른 페이지로 제어권을 이동 할 때 사용
  • 서로 다른 pageContext 객체를 사용
  • 서로 다른 request 기본 객체를 할당 받지만 같은 값을 가짐
  • <jsp:param> 태그를 사용하여 새로운 파라미터를 넘겨줄 수 있음

<jsp:plugin> 액션 태그

  • 자바 플러그인을 사용하여 자바 애플릿을 실행 하고자 할 때 사용
  • 필요한 속성

속성

설명

type

applet 또는 bean

브라우저에서 읽어 들일 자바 컴포넌트 타입

code

파일이름

자바 컴포넌트를 포함하고 있는 파일

codebase

디렉토리 URL

code 속성에 명시한 파일을 포함하고 있는 디렉토리

height

정수값

브라우저 원도우에 표시될 자바 컴포넌트의 높이

width

정수값

브라우저 원도우에 표시될 자바 컴포넌트의 넓이


 

11강. 자바빈 컴포넌트 사용1

빈의 기초

  • 빈의 정의
  • 특정 기능을 수행하도록 미리 정의되어진 클래스
  • 빈의 특징
  • 모듈화 되어 있고 재사용 가능
  • 내부의 테이터와 로직이 캡슐화 되어 있음.
  • 사용법에 대한 인터페이스만 알면 누구나 사용가능
  • 프로그램 개발시 표준화된 인터페이스를 통해 접근 가능하므로 현저한 시간 단축

Property

  • 정의
  • 빈이 가지고 있는 데이터의 값을 설정하거나 읽어 들이는 기능을 수행하는 자바빈의 속성
  • 종류
  • Setter: 빈의 속성값을 설정하기 위한 메소드
  • Getter: 빈의 속성값을 읽어 들이기 위한 메소드
  • 규약
  • 시작은 소문자 단어가 바뀔 때마다 대문자
  • 외부에서 접근 가능해야 하므로 접근속성은 public 이어야 함.
  • get 또는 set 다음에 데이터 멤버의 이름이 와야 함.
  • 특정 객체를 propety 인수로 전달 가능

빈 관련 JSP 태그

  • <jsp:useBean> 태그
  • 페이지 내에서 자바빈을 사용할 수 있도록 설정
  • 사용 가능한 속성

속성

속성 기본값

id(*)

자바 식별자

없음

scope(*)

page

request

session

application

page

class(*)

자바 클래스 이름

없음

type

자바 클래스 이름

Class 속성에 지정된 값

beanName

자바 클래스 또는 자바빈

없음

  • <jsp:setProperty > 태그
  • 형식 : <jsp:setProperty name=”$id” property=”$propertName” value=”$val” />
  • 정의
  • 해당 속성값에 대한 setProperty 메소드를 호출
  • propertyValue 값을 해당 속성에 설정
  • <jsp:getProperty > 태그
  • 형식 : <jsp:getProperty name=”$id” property=”$propertName” />
  • 정의
  • 해당 속성값에 대한 getProperty 메소드를 호출
  • 해당 속성값을 호출

 

12강. 자바빈 컴포넌트 사용2**

빈 컴포넌트의 영역

  • page 영역
  • 페이지의 요청과 동시에 생성되며 페이지의 소멸과 함께 빈 객체도 소멸
  • scope 속성의 값을 생략할 경우 이 값으로 설정
  • request 영역
  • 브라우저의 한 번 요청이 완료될 때까지 존재
  • 하나의 jsp 페이지로 구성된 경우 page 영역과 request 영역은 동일한 효과를 가짐
  • 포함되는 페이지에서 빈 객체를 사용하기 위해서는 반드시 빈 객체가 먼저 생성되어야 함.
  • session 영역
  • 세션의 생성과 함께 빈 객체가 생성되며 session 객체가 소멸되면서 함께 소멸
  • 사용자의 중요한 정보는 데이터 베이스 또는 다른 저장 장치를 이용하는 것이 일반적
  • application 영역
  • jsp 컨테이너를 종료하기 이전까지 서버에 존재
  • 서버의 모든 사용자들에게 공통적으로 사용되므로 사용자 개인정보는 session 객체에 저장하는 것이 일반적
  • Web 카운트 등 공통적으로 사용되는 빈 객체의 영역으로 사용

스크립트 와 빈 태그의 혼합

  • 빈 태그만을 이용하는 경우
  • <jsp:useBean id=”test” class=”pastday.bean.TestBean” />
  • <jsp:getProperty name=”test” property=”testProperty” />
  • 스크립트를 이용하는 경우
  • <jsp:useBean id=”test” class=”pastday.bean.TestBean” />
  • <%= myBean.getTestProperty() %>


 

13강. 테이터 베이스의 사용

Mysql의 설치

  • MariaDB 10.x 설치 함.
  • 추후 상세 공부 필요함. 차이점 공부 하기

Mysql(MariaDB)의 기본 사용법

  • 명령어들
  • show databases; : 테이터 베이스 목록 보기
  • use <db명>;     : 특정 테이터베이스 사용하기
  • show tables; : 테이블 목록 보기
  • desc <table명>; : 테이블 구조 보기  

JSP에서 테이터베이스 사용하기


 

14강. JSP에서 Cookie 사용하기

쿠기의 설정

  • 쿠키란
  • 서버에 접속하는 사용자의 컴퓨터에 특정 정보를 저장할 수 있는 기술
  • 사용자는 쿠키를 저장했던 사이트를 찾아갈 경우 자신의 컴퓨터에 저장된 정보를 가지고 가게됨
  • 브라우저의 옵션에 따라서 쿠키를 지원하지 않는 경우도 있음.
  • 서버에세는 이러한 정보를 가지고 방문하는 사용자에 대한 특정 작업을 진행할 수 있음
  • 쿠키의 설정 방법
  • Cookie cookie = new Cookie(cookieName,cookieValue); //쿠키 생성
  • cookie.setPath(“/경로”); //쿠키 경로
  • cookie.setMaxAge(1*60*60); //유효기간, 1시간 (초단위)
  • Response.addCookie(cookie); //응답에 메시지 쿠키 추가
  • 만약 쿠키 값에 이상한 문자열을 포함하는 경우 저장되지 않는 오류가 발생한다.
  • 쿠키 클래스가 제공하는 메소드

메소드

설명

getName()

이름 반환

getValue()

저장된 값을 반환

setMaxAge()

최대 유효기간 지정(단위 초)

setPath()

재전송할 경로 지정

setValue()

새로운 값을 할당

쿠기의 변경과 삭제

  • 쿠키의 변경
  • 변경하고자 하는 쿠키 객체를 구함.

Cookie[] cookies = request.getCookies();
Cookie myCookie =
null;
if(cookies != null){
 
for(int i=0; i < cookies.length;i++){
   
if(cookies[i].getName().equals("사용자정의명")){
      myCookie = cookies[i];
   }

  • 해당 쿠키 객체의 setValue() 메소드를 호출
  • myCookie.setValue(“새로운값”);
  • 응답 객체의 addCookie() 메소드를 호출하여 변경된 쿠키를 추가
  • Response.addCookie(myCookie);
  • 단 myCookie 의 value 이상한 문자열 들어 간 경우 에러가 발생될 수 있음.
  • 쿠키의 삭제
  • 삭제하고자 하는 쿠키의 이름으로 객체 생성

Cookie delCookie = new Cookie("myCookie","0");

  • 유효기간을 0으로 설정한 후 응답객체에 추가

delCookie.setMaxAge(0);
response.addCookie(delCookie);


 

15강. JSP에서 Session 사용하기

세션이란

  • 사이트에 접속하는 사용자마다 고유의 ID를 부여하여 생성하는 객체
  • 같은 브라우저의 요청에 대해서는 같은 세션 객체를 제공
  • 최초 접속한 브라우저에서 사이트의 어떠한 페이지를 방문하더라도 같은 세션 객체를 사용하므로 해당 사용자의 정보를 지속적으로 유지 할 수 있음.
  • 웹서버는 쿠키를 통해서 사용자의 컴퓨터에 고유의 세션 ID를 저장하여 지속적인 상태를 유지

세션을 이용한 값의 저장

  • 값의 저장방법
  • session.setAttribute(“<변수명>”,<저장할값>);
  • 값을 불러오는 방법
  • session.getAttribute(“<변수명>”);
  • 세션에는 자바에서 사용할 수 있는 모든 객체를 저장할 수 있다.

세션에 저장된 값의 삭제

  • 세션에 저장된 값의 삭제 방법
  • session.removeAttribute(“<변수명>”);
  • 현재 세션의 아이디를 구하는 방법
  • session.getId();

 

16-20강. 예제 프로젝트

  • mysqladmin -u<유저명> -p create <생성할DB>
  • DB 생성하기
  • 테이블 생성 (sql 파일 이용해서)
  • mysql -uroot -p < <파일명.sql>
  • JDBC 드라이버 웹서버에 로딩하기
  • TOMECAT_HOME\lib\_jdbc_lib.jar 를 위치 시킴
  • 로그인 처리
  • 현재 나의 application에 대해서 연구 해 보자(18강에 존재함)
  • 페이지 처리에 대한 로직을 공부 및 새로이 작성하기

방명록

  • Bean 객체를 이용하여 정보를 가져 옴.
  • 사용자 정의 Bean 객체를 사용하여 전체 파라미터 한 꺼번에 설정 하기

<jsp:useBean id="data" class="javacan.guestbook.GuestBookData">
   <jsp:setProperty name=
"data" property="+" />
</jsp:useBean>

게시판의 처리

cosmoslight.huni@gmail.com님이 다음 문서를 첨부했습니다.
[강좌]옛날강좌들-JSP기초강좌
Google 문서: 온라인에서 문서를 만들고 수정해 보세요.
Google LLC, 1600 Amphitheatre Parkway, Mountain View, CA 94043, USA
다른 사용자가 Google 문서의 문서를 나와 공유하여 발송된 이메일입니다.
Google 문서 로고

댓글 없음: