일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- HelloWorld출력
- 타임리프 특징
- git
- 정보처리기사실기
- 스프링부트설정
- 타임리프유틸리티객체
- 정보처리기사실기요약
- 타임리프변수
- 타임리프URL
- 타임리프Unescape
- cmd에서java파일실행
- java
- 타임리프Escape
- 정보처리기사
- mysql
- mybatis
- mysql설치하기
- ER모델
- thymeleaf
- 개체관계모델
- 타임리프SpringEL
- spring
- mysql다운로드
- 이클립스없이cmd
- 정처기실기
- 정처기실기요약
- 타임리프기본객체
- 타임리프 표현식
- 타임리프날짜
- MySQL설치순서
- Today
- Total
ye._.veloper
[ Java ] JSP(Java Server Pages) 란? 본문
☁ JSP (JavaServer Pages) 란 ?
· HTML 코드에 JAVA 코드를 넣어 동적 웹 페이지를 생성하는 웹 애플리케이션 도구
· JSP 가 실행되면 자바 서블릿(Servlet)으로 변환되며 웹 애플리케이션 서버(WAS)에서 동작되면서 필요한 기능을 수행하고
그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.
☁ JSP 특징
· HTML 페이지에 Java 코드를 직접 사용
· Servlet Container에 의해 관리되는 내장 객체들의 LifeCycle을 이용한 페이지 간의 속성 관리
· Custom Tag 기술을 사용한 코드의 태그화(action, JSTL 등)
· EL(Expression Language)를 통한 데이터 표현
☁ JSP의 구조와 동작 원리
◽ 구조
· 기본적으로 HTML 문서의 형식을 가짐
· 서블릿 컨테이너는 JSP 파일을 서블릿 구조의 .java 소스코드로 변환하며 컴파일을 수행
· 컴파일이 완료되면 JSP는 더이상 파일로 부터 처리되는 구조가 아니라 컨테이너에 로드된 서블릿으로 동작하는 구조
1 ) JSP 소스 코드 작성 ➡ 웹 애플리케이션 배포
2 ) 사용자 요청 시, 컨테이너는 해당 JSP의 클래스 변환 여부 확인
3 ) 변환되지 않았다면 xxx_jsp.java 파일 생성 및 .class로 컴파일
4 ) jspInit( ) 메서드를 통해 사용자 요청 처리
5 ) _jspService() 메서드를 통해 사용자 요청 처리
6 ) 이후 요청에 대해 메모리 상의 Servlet으로 서블릿과 같이 서비스
7 ) 컨테이너 종료 혹은 관리 도구에 의해 서블릿 jspDestroy( ) 메서드 호출하여 종료
◽ 과정
1 ) 브라우저가 웹 서버에게 JSP에 대한 요청 정보를 전달
2 ) 브라우저가 요청한 JSP가 최초 요청 시에만 JSP로 작성된 코드 ➡ Servlet 코드로 변환됨 (java 파일 생성)
3 ) Servlet 코드를 컴파일해서 실행 가능한 byte코드로 변환 (class 파일 생성)
4 ) Servlet이 실행되어 요청을 처리하고 응답 정보를 생성
☁ JSP의 장 · 단점
◽ 장점
· HTML 파일에 자바 기술을 거의 무한대로 사용할 수 있다.
· 비교적 쉽게 개발이 가능하다.
· 커스텀태그 라이브러리 등 JSP 개발에 도움을 주는 확장 태그 구조를 사용할 수 있다.
· 서블릿으로 변환되어 실행 되므로 서블릿 기술의 장점을 모두 가진다.
· MVC 패턴, 스프링프레임워크등 잘 설계된 구조를 적용할 수 있어 체계가 잡히면 개발 생산성이 향상되고 성능이 보장 된다.
· 모든 개발이 서버에서 이루어지므로 개발의 집중화를 통한 효율이 있을 수 있다.
◽ 단점
· 화면 구성요소의 변경은 jsp -> java -> class -> 서블릿 실행의 과정을 거치게 되므로 개발 과정에서 사소한 UI 변경도
매 번 확인하는데 시간이 소요된다.
· 개발자와 디자이너간의 역할 분담에 제약이 있다.
· jsp 파일의 화면 디자인 확인을 위해서도 반드시 서블릿 컨테이너의 실행이 필요하다.
💡 전반적으로 JSP 자체의 단점이라기 보다는 SSR(Server Side Rendering) 방식의 백엔드 웹 개발의 문제라 볼 수 있다.
·
☁ JSP 구성요소 (기본 태그)
종 류 | 사용 용도 | 형 식 |
지시자(Directive) | JSP 파일의 속성을 기술(지정)함 ➡ JSP 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 전달하기 위한 내용 |
· page 지시어 <%@ page ~~ %> · include 지시어 <%@ include ~~ %> · taglib 지시어 <%@ taglib ~~ %> |
주석(Comment) | JSP 페이지 설명을 넣음 | <% -- --> |
선언(Declaration) | 변수와 메소드를 선언함 | <%! %> |
표현식(Expression) | · 브라우저를 통해 클라이언트에 전달될(html 응답에 포함될) 자바 표현식 포함 · 계산식이나 함수를 호출한 결과를 문자열 형태로 출력함 · EL 로 대체 가능 |
<%= %> |
스크립틀릿(Scriptlet) | Java 코드를 기술함 ➡ MVC패턴 적용과 JSTL + EL로 대체 가능 |
<% %> |
액션 태그(Action Tag) | Java Bean이나 애플릿 서버 모듈과 연결함 | jsp:forward jsp:include jsp:useBean jsp:setProperty jsp:getProperty jsp:param |
· <% %> 안에 코드를 작성하면 서버에서도 Java 코드로 인식하게 된다.
☁ Servlet 이란?
· 웹 페이지를 동적으로 생성하기 위한 서버측 프로그램
· Java 언어를 기반으로 만들어지며 웹 애플리케이션 서버(WAS; Web Application Server) 위에서 컴파일되고 동작한다.
☁ JSP와 Servlet
· JSP는 HTML 내부에 Java 소스 코드가 들어감으로 인해 HTML 코드를 작성하기 간편
· Servlet은 Java 코드 내에 HTML 코드가 있어서 읽고 쓰기가 불편하기 때문에 작업의 효율성이 떨어진다.
Ref.
'Java' 카테고리의 다른 글
[ Java ] Java 파일의 컴파일 과정 (0) | 2023.04.29 |
---|---|
[ Java ] 개발 도구없이 cmd 창으로 컴파일 하기 (0) | 2023.04.28 |
[ Java ] Call by Value와 Call by Reference 차이, 예제 (0) | 2023.03.03 |
[Java] 변수(Variable) (0) | 2023.01.12 |
[Java] 출력 메서드 (System.out.println(), System.out.print(), System.out.printf() ) (0) | 2023.01.12 |