JSP

210930(목) JSP - diretive / 자바코드넣기 / 내장객체(자동서블릿생성) / 주석 / 글목록 숙제

구름이팡팡 2021. 9. 30. 11:16
728x90

JSP (Java Server Page) =====> 자바코드와 html코드를 섞어서 쓴다!!!!!

: 서버를 만드는?@!

: 웹에서 실행하는 프로그램

: java in HTML -> 자바 코드를 넣는 점이 중요

 

JSP 란 JavaServer Pages 의 약자이며

HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고

그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

 

* 웹어플리케이션(Web Application)

웹어플리케이션은 웹에서 실행되는 응용프로그램을 뜻하며 인터넷을 통한 은행업무, 인터넷쇼핑, 등등 인터넷에서 하는 여러 서비스를 총칭

하며 사용자가 필요한 요청(Request) 를 하고 서버에서는 이에 해당하는 요청을 수행하고 그리고 요청한 데이터를 응답(Response) 한다.

 

웹 어플리케이션이 위와 같이 동작하기 위한 몇가지 구성요소가 있다.

웹 브라우저(Web Browser) : 클라이언트에서 요청을 하고 전달받은 페이지를 볼수있는 환경을 말한다.  ( 크롬, IE, Safari, Firefox 등.. )

웹 서버(Web Server)  : 클라이언트로 부터 요청받아 서버에 저장된 리소스를 클라이언트 에게 전달한다. 주로 정적컨텐츠롤 담당한다.

웹 어플리케이션 서버 ( Web Application Server ) : 줄여서 was 라고도 부르며 서버단에서 필요한 기능을 수행하고 그결과를 웹서버에게 전달한다.

데이터베이스 : 서비스에 필요한 데이터를 보관, 갱신 등 관리를 한다.

 

 

* 자바 서블릿(Java Servlet)

서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말한다. 

이는 자바 언어를 기반으로 만들지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작한다.

 

 

 

서블릿                         JSP

웹                              웹

html in JAVA                JAVA in html    => 배경이 누구냐가 다르다~!!!!!! 

 

 

cf) 자바빼고는 다 소문자로 시작!!!!

 

* directive

1. <%@ page %> - 환경설정

2.  <%@ include  %>

3.  <%@ taglib %>


<JSP directive (지시자)>

JSP 페이지를 해당 서블릿으로 어떻게 변환하는지 웹 컨테이너에게 알려주는 메시지이다

응답에 대한 설정을 부여하는 것이다

- JSP page directive <%@ page %>

- JSP include directive <%@ include %>

- JSP taglib directive <%@ tablib %>

 

1. JSP page directive

현재 페이지에 대한 설정

 

JSP page directive 속성

이거두개만 자주쓴다?!

import

contentType

HTTP 응답의 MIME(Multipurpose Internet Mail Extension) 타입을 정의

기본값(default)“text/html; charset=ISO-8859-1”

extends

extends 속성은 생성된 서블릿에서 상속할 상위클래스를 정의한다

extends는 거의 사용되지 않는 속성이다

info

서블릿 인터페이스의 getServletInfo()에 의해 검색될 JSP 페이지의 정보를 설정한다

buffer

JSP 페이지에 의해 생성될 결과를 처리하기 위한 버퍼 사이즈를 KB단위로 설정한다.

기본값(default)8KB 이다.

language

isELIgnored

default=false이므로 EL이 사용되도록 설정되어 있다

JSP에서 EL(Expression Language)를 무시하도록 한다

isThreadSafe

default=true

JSP와 서블릿(servlet)은 모두 멀티쓰레드가 된다.

속성을 false로 설정하면, 웹 컨테이너는 다수의 요청(request)을 순차적으로 실행할 것이다.

, 하나의 요청에 대해 JSP가 응답한 후에 그 다음 요청을 하나씩 차례대로 수행하는 것이다

autoFlush

default=true

출력할 내용이 굉장히 많아서 버퍼 용량을 넘을 경우, 자동으로 flush해서 자동으로 클라이언트에게 정보를 내보내게하는 속성이다

버퍼가 기본값이면 autoFlush가 적용될 일이 없기 때문에 보통 false로 준다.

session

default=true

로그인 정보 저장

pageEncoding

default=ISO-8859-1

errorPage

에러 페이지를 지정한다.

현재 페이지에 exception이 발생하면 설정된 에러 페이지를 호출한다.

isErrorPage

현재 페이지가 에러 페이지임을 선언한다

 

2. JSP include directive

JSP, HTML, TEXT 등의 리소스 파일을 불러올 때 사용한다.

include는 페이지 번역(translation) 시 리소스 파일의 실제 내용을 불러온다

똑같은 이름의 변수가 존재하면 error

 

3. JSP taglib directive

태그가 정의되어 있는 태그 라이브러리(tag library)를 지정할 때 사용한다.

태그를 정의하기 위해서는 TLD(Tag Library Descriptor)파일을 사용한다


<자바 코드라고 알려주는 것!!!>

# 선언문
<%! 전역, 1번 생성 %> => 출력할 곳에도 <%= %> 해줘야 한다!!!
<%! 전역변수 or 메소드 - 1번 처리!! %>
서블릿으로치면 init()


# 스크립트릿 (scriptlet)
<% 지역, %>
<% 지역변수 or service처리 - 요청시 마다 처리!! %>
서블릿으로는 service()


# 출력
<%= or 변수 %>
cf) out.println() 지양하고 이거 사용 : MVC로 넘어가려면 out.print 안쓴다!

cf) MVC (따로분리해서한다, 비즈니스 로직(java), 프리젠테이션(web))
서블릿과 jsp는 자바와 웹이 섞여있는데......
=> 배워야 스프링이 수월하다!!!!!!!!

 

전역변수처리
지역변수처리


<jsp 구조>

 

hello.jsp

hello_jsp.java (서블릿) -> jsp를 쓰면 무거운 이유: 이중작업으로 자동으로 이걸 만들기 떄문에!!!!!!!!!!!

hello_jsp.class

 

hello.jsp

hello_jsp.java (서블릿)

 내용이 바뀔때만 컴파일

hello_jsp.class

 

여기로 가면 자동 생성된 파일을 볼 수 있다!

여기서 서블릿 파일 열어보면

이렇게 엔터도 자바식으로 바껴 있고....

서블릿에서 PrintWriter로 만들고...

cf) jsp에서는 서블릿에서 자동으로 out이라는 객체를 JspWriter로 만든다.

이렇게 알아서 서블릿에 써주는 것을 내장객체라고 한다!! 

 

 

 

<내장객체(자동으로 서블릿생성)>

1. request : javax.servlet.http.HttpServletReqeuest

2. response : javax.servlet.http.HttpServletResponse

3. out : javax.servlet.jsp.JspWriter

4. session : javax.servlet.http.HttpSession

5. application : javax.servlet.ServletContent

6. pageContent : javax.servlet.jsp.PageContext

7. page : javax.servlet.jsp.HttpJspPage

8. config : javax.servlet.ServletConfig

9. exception : java.lang.Throwable


<JSP 주석>

 

1. HTML   

-> 매우 주의 ! 수행 된다 ~~~!!

<!--

웹브라우저에는 안보이나 소스보기(F12)하면 보인다

내부적으로는 처리( <% %> <%= %> 주의 : 수행한다~!!!)

-->

 

2. JSP

<%--

웹브라우저에도 안보이고 소스보기(F12)해도 안보인다 차이점 주의~!!!!

--%>

 

cf) Java

// 1줄

/*

2줄 이상

*/


jsp 임포트

<%@ page import="guestbook.dap.GuestDAO" %> 이렇게하든지~!@@@@@@@

 

<이어서 숙제로>

- 어레이 리스트 사용, db쪽은 똑같다

728x90