JSP & SERVLET
-웹 애플리케이션
자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램
JSP가 HTML 문서 안에 JAVA코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있습니다.
Web서버는 WAS에 의해 처리된 결과를 HTML형태로 사용자에게 응답합니다.
여기서 HTML 코드는 사용자가 요청한 웹브라우저로 전송되지만 코드 블록 안의 기술된 코드는 WAS에서 실행되고 결과만 웹브라우저로 전송됩니다.
Servlet 작동방식
1. 클라이언트가 웹브라우저에게 URL을 요청하면 HTTP Request를 해당 서버의 Servlet Container에 전송
2. Servlet Container는 HttpServletRequest, HttpServletResponse 객체 생성
3. 요청 URL을 DD(Web.xml), 혹은 어노테이션을 참조해 해당하는 Servlet을 찾는다.
4. 해당하는 Servlet을 찾았으면 Servlet Container는 service()를 호출하며, POST, GET방식에 따라 doGet(), doPost()가 호출된다.
5.doGet(), doPost()는 동적 웹페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.
6. 사용자에게 응답은 준 뒤 HttpServletRequest, HttpServletResponse 객체를 소멸시킨다.
JSP 작동방식
1. 클라이언트의 요청 URL에 jsp확장자를 확인하면 JSP를 WAS에 전송합니다.
2.WAS는 JSP페이지 전체를 Servlet 소스 코드로 변환한 뒤 변환된 소스코드를 컴파일해 Servlet 객체를 생성한 뒤 init()를 통해 Servlet을 생성합니다.
3. 컴파일된. class파일은 객체가 생성됐을 때 메모리의 Heap영역에 적제 시킵니다.
4. 클라이언트로부터 요청이 왔을 때 실행되는 것은 Servlet이다.
5. 처음 실행하는 경우 초기화 과정이 필요하므로 시간이 걸리지만 컴파일 후 메모리에 적제 돼 있기 때문에 시간 지연이 없습니다.
1. JSP를 사용하는 이유.
Servlet에서 HTML 구문을 사용하기 너무 불편하였다.
out.println("<html><head></head><body>");
out.println("<h1>Hello, world</h1><p>this is sample servlet.</p>");
out.println("</body></html>");
그에 대해 HTML 문서를 편하게 작성하기 위한 자바 프로그램인 JSP를 사용
동적인 HTML문서를 만들 때 정적인 HTML 문서의 출력 부분까지 프로그래머가 담당해야 하므로
정적인 문서의 편리한 출력을 위해 Jasper을 사용하기 위해 JSP를 사용합니다.
JSP란?
Java Server Pages의 약자로서 자바 프로그램과 HTML 태그를 포함한 Server Side 애플리케이션 개발기술이다.
java를 이용해 편하게 html을 작성한 뒤 Servlet으로 변환시켜주므로 JSP와 Servlet은 같다고 말할 수 있다.
Server Side 애플리케이션이란 Java 서버에는 그 안에서 프로그램을 작동시키기 위한 구조가 준비되어 있다. 그 구조에 따라 프로그램을 만들고 포함해 두었다가 사용자가 그 프로그램에 할당된 URL에 액세스 하면 Java 서버는 그 프로그램을 실행하도록 되어 있다.
Java 서버는 JSP 코드를 읽어 들여, 그것을 서블릿 소스 코드로 변환한다. HTML 태그 등도, 모든 out.println으로 쓰이도록 변환되는 것이다. 그렇게 생성된 서블릿 소스 코드를 컴파일하고, 서블릿을 생성하여 호출합니다.
정적인 페이지와 동적인 페이지
정적 웹페이지 (Static Web Page)
Web Server에 미리 저장된 html 파일, 이미지 등등이 그대로 전달되는 웹페이지를 말합니다.
사용자가 요청하는 저장된 웹페이지를 전달하며 고정된 웹페이지만을 보게 됩니다.
동적 웹 페이지 (Dynamic Web Page)
서버에 있는 데이터와 사용자의 전송된 데이터를 가공 처리한 후 생성되어 전달되는 새로운 웹페이지입니다. 사용자는 상황, 시간 , 요청 등에 따라 달라지는 웹페이지를 보게 됩니다.
Iterator란?
lterator는 자바의 컬렉션 프레임웍에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화하였는데
그중 하나가 Iterator입니다.
컬렉션 중 Set 컬렉션 클래스는 요소의 저장 순서를 유지하니 않으며 같은 요소의 중복 저장을 허용하지 않습니다.
그렇기에 저장된 순서가 존재하지 않기에 Iterator로 요소를 얻어올 수 있으며 스레드 환경에서 컬렉션에 개별적인 순서를 부여해 안전하게 작동할 수 있도록 할 수 있습니다.
Interface인 Iterator는
3가지의 메서드가 존재합니다.
boolean hasNext();는 읽어올 요소가 남아있는지 확인하는 메서드입니다. 있다면 true를 없다면 false를 반환합니다.
Object next();는 읽어올 요소가 남아있는지 확인하며 있다면 true를 없다면 false를 반환합니다.
void remove() 메서드는 next()로 읽어 온 요소를 삭제한다. next()를 호출한 다음에 remove()를 호출해야 한다.
Iterator 예제
ArrayList<Integer> list = new ArrayList<Integer>();
for( Iterator<Integer> itr = list.iterator(); itr.hasNext(); )
{
list.get( itr.next() );
}
ArrayList<Integer> list = new ArrayList<Integer>();
Iterator<Integer> itr = list.iterator();
while( itr.hasNext() )
{
list.get( itr.next() );
}
'웹 프로그래밍 기초 > 자바기반의 웹&앱 응용SW 개발자' 카테고리의 다른 글
자바기반의 웹&앱 응용 SW개발자 양성과정 42일차 -64 (0) | 2020.05.01 |
---|---|
자바기반의 웹&앱 응용 SW개발자 양성과정 41일차 -63 (0) | 2020.04.28 |
자바기반의 웹&앱 응용 SW개발자 양성과정 39일차 -61 (0) | 2020.04.23 |
자바기반의 웹&앱 응용 SW개발자 양성과정 38일차 -60 (0) | 2020.04.22 |
자바기반의 웹&앱 응용 SW개발자 양성과정 38일차 -59 (1) | 2020.04.22 |
댓글