2020. 11. 17. 18:42ㆍBACK END/JSP
2020/11/17 진도 시작
JSP (JavaServer Pages)
JSP : JavaServer Pages의 약자
HTML 코드에 Java코드를 넣어 동적인 웹페이지를 생성하는 웹 어플리케이션 도구
JSP가 실행되면 자바 서블릿(Servlet)으로 변환되며
웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고,
그렇게 생성된 데이터를 웹 페이지와 함께 클라이언트로 응답함
웹 (web)
웹(web) : 인터넷 기반의 정보기술
World Wide Web의 줄임말로 WWW라고도 함
전세계 거대한 네트워크 망을 통해 정보를 공유하며 정보의 흐름은 양방향성을 가짐
웹 어플리케이션(Web Application)
웹 어플리케이션 : 웹에서 실행되는 응용프로그램
인터넷에서 하는 여러 서비스를 총칭함(인터넷을 통한 은행 업무, 인터넷쇼핑 등)
사용자가 필요한 요청(Request) > 서버는 이에 해당하는 요청을 수행 > 요청한 데이터를 응답(Response)
웹 어플리케이션 동작을 위한 구성 요소
- 웹 브라우저 : 클라이언트에서 요청하고 전달받은 페이지를 볼 수 있는 환경(크롬, 사파리, IE, Firefox)
- 웹 서버 : 클라이언트로부터 요청받아 서버에 저장된 리소스를 클라이언트에게 전달(주로 정적컨텐츠 담당)
- 웹 어플리케이션 서버 : 줄여서 WAS라고 부르며 서버단에서 필요한 기능을 수행하고 그 결과를 웹서버에 전달
- 데이터베이스 : 서비스에 필요한 데이터를 보관 및 갱신 등 관리 함
자바 서블릿(Java Servlet)
서블릿 : 웹페이지를 동적으로 생성하기 위한 서버측 프로그램을 말함
자바 언어를 기반으로 만들어지며, 웹어플리케이션서버(WAS)위에서 컴파일되고 동작함
JSP와 Servlet
JSP와 서블릿은 결과적으로 하는 일은 동일하지만,
JSP : HTML 내부에 Java소스코드가 들어감으로 인해 HTML코드를 작성하기 간편하단 것이 장점
서블릿 : Java코드 내에 HTML코드가 있어서 읽고 쓰기가 불편하기 때문에 작업 효율성이 떨어짐
그럼에도 웹을 공부할 때 JSP와 서블릿을 함께 배우는 이유는,
JSP로 작성된 프로그램은 서버로 요청 시 서블릿파일로 변환 > JSP태그 분해 및 추출 > 다시 순수한 HTML을 변환
JSP 구성요소
* pdf 수업자료 p.66~
• 정적인 데이터(값이 변동되지 않는)
• HTML, JavaScript, CSS ☞ jQuery, BootStrap.js, Angular.js, Node.js
• XML(eXtensible Markup Language)
• JSON(JavaScript Object Notation)
• 스크립트 : 스크립트릿(Scriptlet), 표현식(Expression), 선언부(Declaration)
• 지시어(Directive)
• 기본 내장 객체(Implicit Object)
• 표준 액션 태그(JavaBean, forward, include 액션 태그)
• 표현 언어 (Expression Language)
• 커스텀 태그(Custom Tag)와 표준 태그 라이브러리 JST
JSP의 구성요소 크게 6가지
1. 스크립트 요소
1) 스크립트 릿 <% ... %>
JSP페이지 내부에 자바 문장 사용
변수, 제어문, 프로그램 코드 구현 (자바에서는 지역변수)
<%
String name = "김철수";
int age = 30;
%>
2) 표현식 <%= ... %>
출력결과에(HTML요소 내) 값(Value)를 넣기 위해 사용함
변수의 결과값, 메소드의 리턴값 등
3) 선언문 <%! ... %>
JSP페이지 내부에 자바 메소드를 선언함
전역 변수 및 메소드 선언 (자바에서는 인스턴스 변수, 인스턴스 메소드)
4) 지시어 <%@ ... %>
JSP페이지의 설정 정보에 대한 설정/셋팅
<body>
<h1>애국가 1절</h1>
<%@include file="a.jsp" %>
<h3>이름 : <%=name %></h3>
</body>
2. 지시어(directive)
JSP에 대한 설정 정보 또는 JSP페이지에 다른 문서를 포함(include)시킬 때 사용함
1) <%@ page %>
JSP페이지 내부에 자바 소스코드를 삽입함
2) <%@ include%>
번역 단계에서 다른 문서를 포함시킴
3) <%@ tablib%>
태그 라이브러리를 선언함
3. 내장객체(Implicit Object)
사전정의된 객체.
JSP컨테이너에 의해 개발자들이 명시적으로 선언하지 않고 바로 사용할 수 있는 자바객체
1) request : 클라이언트 > 서버로 보내지는 요청과 관련된 객체
2) response : 서버 > 클라이언트로 보내지는 응답과 관련된 객체
3) out : 출력을 클라이언트로 보내는 객체
4) session : 서버 측 웹컨테이너에 사용자의 상태를 관리하는 객체
5) application : 어플리케이션 전반에 걸친 정보를 관리하는 객체
6) config : 페이지와 관련된 설정(Servlet config) 객체
7) pageContext : 현재 페이지의 내용을 저장하고 있는 객체
8) page : 페이지에 대한 실제 인스턴스(자바클래스)를 저장하고 있는 객체
9) Exception : 이전 페이지의 에러를 저장하고 있는 객체
4. 액션태그(Action Tag)
액션태그는 xml 문법을 서블릿엔진을 제어함
1) jsp:include : 페이지가 요청될 때 해당 태그가 위치한 곳에 파일을 포함시킴
2) jsp:useBean : javaBean을 찾고 인스턴스화함
3) jsp:setProperty : javaBean의 프로퍼티를 설정함
4) jsp:getProperty : javaBean의 프로퍼티를 가져옴
5) jsp:forward : 하나의 JSP페이지에서 다른 JSP페이지로 강제이동
6) jsp:plugin : javaBean또는Applet을 현재 JSP페이지에 포함시킬 때 사용함
7) jsp:element : xml태그를 동적으로 정의함
8) jsp:attribute : 동적으로 정의된 xml태그의 속성을 정의함
9) jsp:body : 동적으로 정의된 xml태그의 본문을 정의함
10) jsp:text : JSP페이지와 문서에 텍스트를 쓰는데 사용함
5. 표현언어(Expression Language)
기본문법 : ${expr}
스크립트 요소의 사용없이 JSP페이지에 값을 표현할 수 있는 태그 기반의 새로운 언어
표현언어의 표현식에는 정수, 부동 소수점 수, 문자열, 부울값에 대한 참거짓, 내장null 등 사용가능함
6. 사용자 정의 태그, JSTL (=표준 태그 라이브러리, JSP Standard Tag Library)
JSP가 제공해주는 태그 외에 사용자가 별도로 정의해 사용할 수 있는 태그
JSTL 또한 사용자 정의 태그에 속함
자바언어의 조건문이나 반복문 같은 프로그래밍 요소를 태그로 구현할 수 있게 해줌
JSTL의 코어태그(Core Tag)는 아래와 같음
1) <c:out> : <%= ... %>와 유사하며 표현식에 사용됨
2) <c:set> : JSP에 사용될 변수를 지정하며 범위를 설정할 수 있음
3) <c:remove> : 변수 제거 (범위를 설정한 경우 해당 범위내의 변수를 제거)
4) <c:catch> : 에러(Exception) 캐치 및 처리
5) <c:if> : 조건이 참일 경우 본문 포함됨
6) <c:choose> : 조건태그, 배타적인 조건부 연산에 사용됨
7) <c:when> : choose 태그가 사실일경우 본문에 포함됨
8) <c:otherwise> : choose 태그가 거짓일경우 본문에 포함됨
9) <c:import> : 설정된 url 의 자원을 삽입함
10) <c:forEach> : 컬렉션 또는 Map 과 같은 유형을 허용하고 이를 반복처리함
11) <c:forTokens> : 설정한 구분자로 분리된 토큰을 반복함
12) <c:param> : import 태그에 설정된 url 에 파라미터를 추가함
13) <c:redirect> : 새로운 url 로 리다이렉트 시킴
14) <c:url> : URL 를 재생성함
* 출처
사이트 : www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm
수업자료 : 첨부파일
'BACK END > JSP' 카테고리의 다른 글
Servlet 2 (서블릿, 파일업로드) (0) | 2020.11.26 |
---|---|
데이터 처리, 웹프로그래밍 흐름 (jsp, 모듈화, jstl, html, jdbc) (0) | 2020.11.24 |
내장객체(Implicit Object) (0) | 2020.11.23 |
웹 프로그래밍과 서블릿 (0) | 2020.11.20 |
JSP Programming (톰캣설치, 인코딩설정, 웹프로젝트, 웹서버) (0) | 2020.11.19 |