728x90
JSP
- JSP
- JSP 기본 태그
- JSP 기본 객체
- 페이지 이동
JSP Java Server Page
JSP
- Servlet 표준을 기반으로 작성된 웹 어플리케이션 개발 언어
- HTML 내에 Java를 작성하여 동적으로 웹페이지를 생성하여 브라우저에게 돌려주는 페이지
- 실행 시 Servlet으로 변환된 후 실행
JSP 구성요소
- 지시자 Directive
- JSP 페이지에 대한 설정 정보를 지정하기 위해서 사용
- 스크립트 요소: 스크립트릿 Scriptlet, 표현식 Expression, 선언부 Declaration
- JSP에서 문서의 내용을 동적으로 생성하기 위해서 사용
- JSP 기본 객체
- 요청 및 응답 관련 정보를 얻거나 응답 결과를 만들기 위해서 사용
- 표현 언어 Expression Languague
- JSP를 좀 더 간결하게 작성하기 위해서 사용
- Action Tag와 JSTLJSP에서 자바코드를 쉽게 작성할 수 있도록 사용
- 자주 사용하는 기능을 모아 미리 정의하여 Tag 형태로 작성한다
JSP 기본태그
JSP 태그 종류
종류 | 사용용도 | 형식 |
---|---|---|
스크립트릿 scriptlet | 자바코드 작성 | <% %> |
선언 declaration | 변수와 메소드를 선언 | <%! %> |
표현식 expression | 계산식이나 함수를 호출한 결과를 문자열 형태로 출력 | <%= %> |
주석 comment | JSP 페이지 설명 작성 | <%— —%> |
지시자 directive | JSP 페이지 속성 지정 | <%@ %> |
스크립트릿 Scriptlet
- 스크립팅 언어 (java) 로 작성된 코드 조각을 포함하는 데 사용된다
선언부 Declaration
- 멤버변수 선언이나 메서드를 선언하는 영역
표현식 Expression
- 변수의 값이나 계산식 혹은 함수를 호출한 결과를 문자열 형태로 웹문서에 출력
주석문 Comment
- 작성한 코드에 대한 설명을 기술할 경우 사용
- HTML 주석문과 동일한 기능을 하지만 HTML 주석문은 클라이언트에게 보여지고, JSP 주석문은 보여지지 않는다
지시자 Directive
- 웹컨테이너 (Tomcat) 가 JSP 번역하고 실행하는 방법을 서술
- page: 해당 JSP 페이지 전반적으로 환경을 설정할 내용 지정
- include: 현재 페이지에 다른 파일의 내용 삽입할 때 사용
- taglib: 태그 라이브러리에서 태그를 사용할 수 있는 기능 제공
지시자 page
- JSP 페이지 실행 매개변수를 제어
- 출력처리, 오류처리 등의 내용을 포함
속성 | 설명 | 기본값 |
---|---|---|
language | 스크립트에서 사용할 언어 지정 | java |
contentType | JSP가 생성할 문서의 MIME 타입과 캐릭터 인코딩 | text/html |
import | JSP에서 사용할 Java 클래스를 지정 | |
session | JSP가 세션을 사용할지 여부 지정 | true |
buffer | JSP 페이지의 출력 버퍼 크기 지정, ‘none’일 경우 출력 버퍼를 사용하지 않음 | 8kb |
errorPage | JSP 실행 중 에러 발생 시 출력할 페이지 지정 | |
isErrorPage | 에러가 발생했을 때 보여줄 페이지인지 지정 | false |
pageEncoding | JSP 소스코드의 인코딩 지정 | ISO-8859-1 |
info | 현재 JSP 페이지에 대한 설명 | |
autoflush | 버퍼의 내용을 자동으로 브라우저로 보낼지에 대한 설정 | true |
isThreadsafe | 현재 JSP가 멀티스레드로 동작해도 안전한지 여부를 설정, ‘false’일 경우 SingleThread로 동작 | true |
extends | JSP 페이지를 기본적인 클래스가 아닌 다른 클래스를 상속하도록 변경 | javax.servlet.jsp.HttpJspPage |
지시자 include
- JSP 내에 다른 HTML 문서나 JSP 페이지의 내용을 삽입할 때 사용된다
- 반복적으로 사용되는 부분 (header, footer 등) 별도로 작성하여 페이지 내에 삽입하면 반복되는 코드의 재작성을 줄일 수 있다
<%@ include file = "/template/header.jsp %>
지시자 taglib
- JSTL 또는 사용자가 작성한 커스텀 태그를 사용할 때 작성한다
- 불필요한 자바 코드를 줄일 수 있다
<% taglib uri = "http://java.sun.com/jsp.jstl/core" prefix="c" %>
JSP 기본객체
JSP 기본 객체
- JSP에서는 서버 정보 및 요청, 응답에 대한 데이터를 조회, 조작하기 위한 객체를 제공하고 있다
JSP 기본 객체 영역 Scope
JSP 기본 객체 영역 메서드
- servlet과 페이지간 정보를 공유하기 위해서 메서드를 지원한다
아래는 각 영역에서 사용할 수 있는 공통 메서드
메서드 | 반환형 | 설명 |
---|---|---|
setAttribute(String name, Object value) | ||
getAttributeNames() | Enumeration | 현재 객체에서 설정된 값의 모든 속성의 이름을 반환 |
removeAttribute(String name) | void | 현재 객체에서 인자로 받은 이름으로 설정된 값을 삭제 |
getParameter vs set/getAttribute
- parameter: 클라이언트 측에서 보내온 정보 (client에서 request 객체에 담겨온 정보, 그래서 문자열밖에 담지 못함)
- attribute: 서버 측에서 담은 정보
페이지 이동
페이지 이동
요청 (request) 을 받아서 화면을 변경하는 방법은 두 가지가 있다
포워드 방식
요청이 들어오면 요청을 받은 JSP 또는 Servlet이 직접 응답을 작성하지 않고, 요청을 서버 내부에서 전달하여 해당 요청을 처리하게 하는 방식
RequestDispatcher dispatcher = request.getRequestDispatcher("이동할 페이지");
dispatcher.forward(request, response);
request, response 객체가 전달되어 사용되기 때문에 객체가 사라지지 않는다
브라우저에서는 최초 요청한 주소가 표시된다
리다이렉트 방식
요청이 들어오면 내부 로직 실행 후, 브라우저의 URL을 변경하도록 하여 새로운 요청을 생성함으로써 페이지를 이동하는 방식
response.sendRedirect("location");
브라우저가 새로운 요청을 만들어 내기 때문에 최초 요청 주소와 다른 요청주소가 화면에 보여진다
forward vs redirect
- forward동사무소에 서류를 가지고 갔는데 자기 부서 일이 아니라서 다른 부서에 서류를 전달해 주겠다
- request, response 그대로 가지고 다른 곳에 요청을 보내서 응답을 다시 보내줌
- redirect자기 부서 일이 아니니까 다른 부서로 가세요.
- 다른 곳으로 다시 요청을 보내라
그래서 redirect는 다른 부서 < 를 나타내는 링크만 있고 forward는 이동할 페이지 링크와 request dispatcher가 있다.
728x90
'Web Back > Java' 카테고리의 다른 글
JAVA Servlet (0) | 2023.09.18 |
---|