본문 바로가기
다양한 기술들/Web 관련

[JSP] HTML 위에서 작성하는 Java / 기본 문법

by 예스p 2023. 1. 10.

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객체에 대한 참조 변수

<< JSP 내장 객체 영역 >>

 

 

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>

 

 

 

 

 

 

 

 

 

 

댓글