본문 바로가기

IT&코딩/JSP

JSP - 6일차 (Java Server Page)

728x90
반응형

■ JSP

 

일반적인 웹 페이지는 대부분 미리 서버에 등록해 두었다가 웹브라우저가 서버에 특정 데이터를 요청하면 이를 웹브라우저로 전송해서 보여준다. 이를 가능케 하는 기술 중 하나가 JSP(Java Server Page)이다.

 

HTML 내부에 자바(java)코드를 삽입하는 형식이다. 다시 말해 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다. 서블릿을 이용하게 되면 웹 프로그래밍을 할 수 있지만 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등 비효율적인 측면들이 있다. 때문에 서블릿을 작성하지 않고도 간편하게 웹 프로그래밍을 구현하게 만든 기술이 JSP(Java Server Page)이다.

 

□ 특징

 

- 동적 웹 어플리케이션 컴포넌트이다.

- 확장자는 .jsp이다.

- 클라이언트 요청에 동적작동, HTML 페이지로 변환되어 응답된다.

- 서블릿으로 변환되어 실행된다.

- MVC 패턴에서 View로 이용된다.

 

□ 동작원리 

 

클라이언트가 *.jsp에 대한 요청을 웹 서버에 하게 된다. 웹 서버는 다시 이 요청을 JSP 컨테이너로 넘긴다. JSP 컨테이너는 해당 JSP 페이지를 찾아 서블릿(자바 파일/*.java)으로 변환시킨다. 자바 파일을 컴파일한다. 자바 파일의 결과가 다시 사용자의 웹브라우저로 전송되어 클라이언트가 요청한 결과를 받아볼 수 있게 된다.

 

□ 태그의 개념 및 종류

 

Servlet은 JAVA 언어를 이용하여 문서를 작성하고, 출력객체(PrintWriter)를 이용하여 HTML 코드를 삽입하지만, JSP는 Servlet과 반대로 HTML 코드에 JAVA 언어를 삽입하여 동적 문서를 작성할 수 있다.

 

HTML 코드 안에 JAVA 코드를 삽입하기 위해서는 JSP 태그를 이용해야 한다.

 

<helloJSP.jsp>

 

이와 같이 HTML 주석은 웹브라우저의 개발자 페이지에서 노출이 되는 것을 확인할 수 있다.

 

<jspTag01.jsp>

 

 

<jspTag02.jsp>

 

 

<jspTag03.jsp>

 

 

<jspTag04.jsp>

 

 

□ JSP 내장 객체

 

개발자가 객체를 별도로 생성하지 않아도 JSP에서 바로 사용할 수 있는 객체이다. 컨테이너가 JSP를 Servlet으로 변환할 때 자동으로 객체가 생성된다. 

 

 

□ Request 내장 객체

 

웹 브라우저를 통해 서버에 어떤 정보를 요청하는 것을 request라고 한다. 이러한 요청정보는 request 객체가 관리한다. (웹 브라우저에서 전달되는 정보의 모임)

 

form에 입력한 요구사항을 얻어낼 수 있도록 하는 메소드 제공

 

 

request 객체는 웹브라우저와 웹 서버의 정보도 가져올 수 있다.

 

· getContextPath() : 해당 JSP 페이지가 속한 웹 어플리케이션의 콘텍스트 패스를 얻는다.

· getMethod() : 요청에 사용된 요청 방식(GET, POST)을 얻는다.

· getSession() : 세션 객체를 얻는다.

· getProtocol() : 해당 프로토콜 객체를 얻는다.

· getRequestURL() : 요청 URL을 얻는다.

· getRequestURL() : 요청 URL을 얻는다.

· getQueryString() : 요청 QueryString를 얻는다.

 

<request01.jsp>

 

 

<requestForm.html>

 

 

<request02.jsp - requestForm.html로부터 온 데이터 처리>

 


□ Response 내장 객체 

 

response 객체는 JSP 페이지의 실행결과를 웹 브라우저로 되돌려줄 때 사용되는 객체이다. 서버에서 클라이언트에 대한 응답을 response 객체를 통하여 처리한다.

 

<formEx.html>

 

 

<responseEx.jsp - formEx.html에서 온 정보처리>

 

 

<OK.jsp - 정답인 경우>

 

 

<NG.jsp - 오답인 경우>

 


□ JSP 액션태그

 

액션태그란 JSP 페이지 내에서 어떤 동작을 하도록 지시하는 태그이다.

페이지 이동, 페이지 include, 자바 빈 생성 등이 있다.

 

- forward 태그 관련

 

<forwardForm.html>

 

 

<foward.jsp>

 

 

<food.jsp>

 


- include 관련

 

<include02.jsp>

 

 

<include01.jsp>

 

<웹브라우저 결과>

 


<include04.jsp>

 

 

<include03.jsp>

 


□ forward와 redirect 차이점

 

- forward 방식 : 웹 컨테이너 차원의 페이지 이동, 웹 브라우저는 다른 페이지로 이동했음을 알 수 없고, 브라우저에 최초 호출한 URL이 표시된다.

- redirect 방식 : 다른 웹 컨테이너에 있는 주소로 이동 가능, 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동.

 

 

□ include 지시자와 액션태그 차이점

 

- <%@ include %> 지시자 : 원래 페이지 안으로 include 지시어로 지정한 페이지의 소스가 그대로 복사된다.

- <jsp:include> 액션태그 : 소스코드가 복사되는 것이 아니라 제어권 자체가 include 액션으로 지정된 페이지로 넘어갔다가 다시 원래 페이지로 돌아온다.

 

 

■ 쿠키

 

□ 쿠키란?

 

웹브라우저에서 서버로 어떤 데이터를 요청하면, 서버측에서는 로직을 수행한 후 데이터를 웹브라우저에 응답한다. 그리고 서버는 웹브라우저와의 관계를 종료한다. 이렇게 웹브라우저에게 응답후 관계를 끊는 것은 http 프로토콜 특징이다.

 

연결이 끊겼을 때 어떤 정보를 지속적으로 유지하기 위한 수단으로 쿠키라는 방식을 사용한다.

 

쿠키는 서버에서 생성해서 클라이언트측에 특정 정보를 저장한다. 그리고 서버에 요청할 때마다 쿠키의 속성값을 참조 또는 변경할 수 있다.

 

쿠키는 4kb로 용량이 제한적이며, 300개까지(1.2MB) 데이터 정보를 가질 수 있다.

 

□ 쿠키 과정

 

 

쿠키를 사용하려면 javax.servlet.http 패키지에 있는 Cookie 클래스의 객체를 생성해야 한다. 이렇게 생성된 쿠키에는 각각의 웹브라우저를 판별할 수 있는 정보가 포함되어 있다. 쿠키는 웹서버가 웹브라우저의 요청에 응답할 때 response 객체에 실려서 사용자의 웹브라우저에 저장된다.

 

□ 쿠키 관련 메소드

 

□ 쿠키 실습

 

<cookieSet.jsp>

 

 

<cookieGet.jsp>

 

<cookieDel.jsp>

 

 

<cookieTest.jsp>

 

진행상황은 웹브라우저 f12 개발자모드를 통해 확인할 수 있다.


 

■ 세션

 

□ 세션이란?

 

세션도 크키와 마찬가지로 서버와의 관계를 유지하기 위한 수단이다. 단 쿠키와 달리 클라이언트의 특정 위치에 저장되는 것이 아니라, 서버상에 객체로 존재한다. 따라서 세션은 서버에서만 접근이 가능하여 보안이 좋고, 저장할 수 있는 데이터에 한계가 없다.

 

 

□ 세션 관련 메소드

 

□ 세션 실습

 

<sessionSet.jsp>

 

 

<sessionGet.jsp>

 

 

<웹브라우저>

 


■ 어플리케이션

 

웹어플리케이션에 대한 정보를 저장한다. 웹브라우저가 종료되면 데이터가 초기화되는 세션(session)과는 달리, 어플리케이션(application)은 서버 자체가 종료되기 전까지 유지된다.

 

 

□ 어플리케이션 실습

 

<applicationSet.jsp>

 

 

<applicationGet.jsp>

 

 

 

■ 예외페이지

 

JAVA에서 예외처리 (try - catch)를 사용하듯이, JSP에서도 예외가 발생할 수 있다. 예외적 상황이 발생했을 경우, 톰캣에서 제공되는 기본적인 예외 페이지가 보여지면 사용자 입장에서 불쾌감이나 거부감이 들 수 있다. 따라서 딱딱한 에러 페이지보다 친근한 느낌이 느껴지는 페이지로 유도할 수 있는 장점이 있다.

 

 

 

 

 

1. page 지시자를 이용하는 방법

 

<error.jsp>

 

 

<errorPage.jsp>

 

 

2. web.xml 파일을 이용하는 방법

 

HTTP는 여러 에러 코드들이 있다. 이중에서 404와 500이 대표적인 JSP 에러이다. web.xml 파일을 이용해 에러페이지를 처리해줄 수 있다.

 

404 : 요청한 페이지가 없을 때

500 : 서버에서 자바를 실행하다가 에러가 났을 때 

 

<web.xml에 등록된 코드 확인>

 

 

① 404 에러

<errorEx1.jsp>

 

a 태그에 기입된 error1004,jsp는 존재하지 않는 페이지이기 때문에 404 에러 발생.

 

<error404.jsp>


② 500 에러

 

<errorEx2>

 

0으로 나누는 구문 오류 발생. 500 에러 페이지로 이동됨.

 

 

<error500.jsp>

 


■ 자바 빈

 

반복적인 작업을 효율적으로 하기 위해 빈을 사용하며, JAVA 언어의 데이터(속성)와 기능(메소드)으로 이루어진 클래스를 말한다. JSP에서는 속성과 메소드를 가진 클래스를 Bean이라고 한다.

 

빈을 만든다는 것은 데이터 객체를 만들기 위해 클래스를 만드는 것이다. 데이터 객체에는 데이터가 있어 그에 해당하는 getter와 setter가 있다.

 

<사용방법>

 

1. 속성과 메소드가 있는 빈 클래스(데이터 클래스)를 만든다.

2. jsp 페이지를 만들어서 액션태그를 이용하여 데이터 클래스를 사용한다. (빈의 내부 데이터를 처리한다.)

 

□ 빈 만들기

 

□ 빈 관련 액션태그

 

1. useBean : 특정 Bean을 사용한다고 명시할 때 사용한다.

 

 

2. setProperty : 데이터 값을 설정할 때 사용한다.

 

 

3. getProperty : 데이터 값을 가져올 때 사용한다.

 

□ 자바 빈 실습

 

<Student.java>

 

 

<bean.jsp>

 


■ 팝업창 실습

 

<main.jsp>

 

 

<popUp.jsp>

 


■ 예제 

 

□ practice01

 

<ex01.jsp>

 

 

<ex02.jsp>

 

 

<ex03.jsp>

 


□ practice05

 

<main.jsp>

 

 

<header.jspf>

 

 

<footer.jspf>

 

 

<웹브라우저>

 


□ practice07

 

<sessionLogin.html>

 

 

<sessionLoginCheck.jsp>

 

 

<sessionMain.jsp>

 

 

<sessionTest.jsp>

 

 

<sessionLogout.jsp>

 


 

□ practice08

 

application 객체를 사용하여 웹브라우저(applicationEx.JSP) 방문시 방문자 수 출력하기

 

<applicationEx.jsp>

 

 

 

728x90
반응형

'IT&코딩 > JSP' 카테고리의 다른 글

JSP - 8일차 (JDBC)  (0) 2022.11.28
JSP - 7일차 (데이터베이스)  (0) 2022.11.25
JSP - 5일차 (서블릿)  (0) 2022.11.14
JSP - 4일차 (자바스크립트)  (0) 2022.11.13
JSP - 3일차 (CSS)  (0) 2022.11.13