JSP 기초
서블릿으로 응답화면을 작성할때의 불편함을 보완해주는 JSP에 대해 톺아본다.
서블릿과 JSP 차이
| Servlet | JSP | |
| 형태 | Java 코드에 HTML 코드 삽입 | HTML코드에 Java코드 삽입 |
| 예시 | PrintWriter객체.println("<HTML>"); | <% for(int i=0; i<10; i++) { %> |
| 특징 | Business 로직 처리에 적합 | 화면 로직 처리에 적합 |
JSP란?
- Java Server Pages
- HTML 코드에 Java 코드를 결합하여 동적인 웹페이지를 생성하는 서버 측 스크립트 언어
- 서블릿의 하위 기술
- 기존 서블릿이 응답화면을 자바 코드 내에서 하나하나 구현했어야 했던 복잡함을 보완하였다.
>> 서블릿은 비즈니스로직(Controller), JSP는 프레젠테이션로직(View)으로 분리한다.
- .jsp 확장자로 JSP임을 지시하며 컴파일 시 서블릿으로 변환된다. - 디렉토리 위치와 컴파일 시기
- 기존 html 파일과 동일하게 배포되는 폴더인 webapp 하단에 위치시킨다.
(소스폴더 위치 아님)
- 최초 요청이 들어올때 서버가 동적으로 컴파일하여 메모리에 로드
- JSP 파일이 수정될때마다 자동으로 다시 컴파일된다. - 주석넣기
<!-- HTML 주석 : 개발자도구탭에 노출이 됨. -->
<%-- JSP 주석 : 개발자도구탭에 노출안됨. --%>
**** 스크립틀릿까지 주석처리 하려면 JSP주석을 사용해야한다!
작성문법 : 스크립팅 태그
- JSP페이지에서 자바코드를 기술할 수 있게 해주는 태그 기술법에 대해 알아본다
- 스크립틀릿
<% 자바코드 %>
- 자바 코드를 서술할 수 있는 가장 기본적인 방법
- 변수 등을 출력하려면 out.println(변수); 의 메소드를 사용한다. - 표현식 태그
<%= 자바코드 %>
- 값을 화면상에 출력할 때 사용
- 서블릿의 PrintWriter객체.print() 메소드와 동일한 역할
- out.print()로 변환되어 실행된다.
- 단일표현식만 사용할 수 있으며 세미콜론(;)을 사용할 수 없다. - 선언문 태그
<%! 자바코드 %>
- JSP 페이지 내에서 사용할 멤버 변수나 메소드를 정의할 때 사용
- 스크립틀릿 내에서 선언된 변수는 지역변수로 각 요청마다 초기화되므로 전역변수처럼 사용하기 위해서 선언문 태그를 사용한다.
<!-- 선언문 태그: 멤버 변수 및 메서드 선언 -->
<%!
private int callCount = 0;
public int incrementCallCount() {
return ++callCount;
}
%>
<!-- 스크립틀릿 태그: 1부터 10까지의 합 계산 -->
<%
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
%>
<!-- 표현식 태그를 통해 합계 출력 -->
<p>1부터 10까지의 합: <%= sum %></p>
<p>페이지 호출 횟수: <%= incrementCallCount() %></p>
작성문법 : 지시어 태그
- JSP 페이지의 전반적인 설정과 동작 방식을 제어하는 데 사용
- page 지시어
<%@ page 속성="속성값" 속성="속성값" ... %>
- 현재 jsp 페이지의 전체적인 설정을 조절한다.
** 주요 속성 :
- language : 사용할 언어 유형을 지정(기본값은 java)
- contentType : 해당 페이지의 형식 / 문자셋 지정.
HTML 페이지로 응답할경우 "text/html; charset=UTF-8"
- pageEncoding : jsp페이지내에 기록된 자바코드의 인코딩 방식 지정
- import : 자바에서의 import 기능으로 여러개 작성할 경우 ,로 연결한다.
ex) import = "java.util.ArrayList, java.util.Date"
길게 작성될 경우 다시 page지시어를 만들어서 따로 기술하기도 한다.
- errorPage : 해당 jsp상에 오류 발생했을 경우 보여줄 에러용 jsp페이지 경로 지정
모든 jsp상에 오류도 동일한 에러페이지가 뜨도록 설정하고 싶다면 web.xml에 기재
- isErrorPage : 현재 페이지가 jsp오류 처리용 페이지인지 정의.
false가 기본값이며, true인 경우 exception 내장 객체 사용 가능 - include 지시어
<%@ include file="..." %>
- 현재 jsp상에서 또다른 jsp 혹은 html 을 포함시키고자 할 때 사용,
삽입하고자 하는 위치에 기재한다.
- 삽입된 jsp의 스타일값이 현재 페이지에도 적용된다.
- 삽입된 jsp안에 선언되어 있는 현재 페이지에서도 사용 가능
단, include된 위치 이후부터 사용 가능
- 메뉴바와 같이 어떤 페이지에서도 보이는 요소들에 활용
**속성 :
▶ file : 삽입하고자 하는 파일의 url - taglib 지시어 :
<%@ taglib 속성="속성값" 속성="속성값" ... %>
- library의 약자. JSP 기능을 좀 더 확장시킬 수 있는 추가적인 라이브러리를 등록하는 구문
- 액션태그와 함께 쓰임.
JSP 내장 객체
- JSP에서 기본적으로 제공하는 객체들로 request, response, out 등
스클립틀릿 태그와 표현식(출력식)에서 사용할 수 있게 암시적으로 선언된 객체 - page
현재 JSP페이지에 대한 참조 변수
하나의 JSP 페이지를 처리할때 사용된다.(가장 좁음) - request
HttpServletRequest 객체 참조 변수
하나의 요청을 처리할때 사용된다.
서블릿에서 포워딩되는 경우에서만 담을 수 있다
(URL재요청의 경우 쓸수 없음. 이때는 session을 써야하고 쓴 후에 지워줘야함) - response
HttpServletResponse 객체 참조 변수 - session
HttpSession 객체 참조 변수
하나의 브라우저를 처리할때 사용된다. - application
ServletContext 객체 참조 변수
하나의 웹 어플리케이션을 처리할 때 사용된다. - out
JSPWriter 객체 참조 변수 - exception
발생하는 Throwable객체에 대한 참조 변수

request 주요 메소드
- request . getParameter ( String )
- String 값의 파라미터 값 리턴 - request . getParameterValues ( String )
- String 값의 파라미터를 배열형태로 리턴 (checkbox등과 같은 복수선택이 가능한 경우) - request . getParameterNames()
- 요청에 포함된 파라미터 이름 리턴 - request . getMethod()
- 현재 요청 방식 리턴 - request . getSession()
- 현재 세션 객체 리턴 - request . setCharacterEncoding( String )
- 클라이언트에서 서버로 전달된 값을 지정한 문자셋으로 변경
response 주요 메소드
- response . sendRedirect ( url )
- 응답결과를 요청으로 하여 지정된 url에 재전송 - response . sendContentType ( String )
- 서버에서 클라이언트로 전달될 값의 데이터 타입 설정
에러 페이지 설정하기
- 모든 페이지에서 에러가 발생할 경우 처리될 에러페이지 :
web.xml의 welcome-file-list 태그 뒤에 기재 - error-code 컨텐트부에는 에러 종류 기재
- location 컨텐드부에는 경로를 기재
- 맨 앞의 / 는 최상위 폴더인 webapp을 의미
<error-page>
<error-code>500</error-code>
<location>/views/error500.jsp</location>
</error-page>

'다양한 기술들 > Web 관련' 카테고리의 다른 글
| [03] Ajax 기초, 실습 (0) | 2023.01.18 |
|---|---|
| [JSP] 간단한 실습 (0) | 2023.01.10 |
| [서블릿] 실습 : form태그를 통한 HTTP 통신 (0) | 2023.01.10 |
| [서블릿] 동적 웹 만들기 개념 / 주요 인터페이스 (0) | 2023.01.03 |
| [서버] 실습 : 아파치 톰캣 / 이클립스 세팅 (0) | 2022.12.29 |
댓글