백엔드 공부/JSP

JSP기본 개념

철매존 2021. 11. 14. 20:55
728x90

JSP

  • JSP 개념
    • Java Server Pages
    • 서버에 등록해 두었다가 웹 브라우저가 서버에 특정 데이터를 요청하면 이를 웹 브라우저로 전송해서 보여주는 기술중 하나임.
    • HTML내부에 자바 코드를 삽입하는 형식이다.
      • 서블릿은 java언어를 이용하여 문서를 작성하고 출력개체를 이용해서 HTML 코드 삽입.
      • JSP는 이와 반대로 HTML코드에 JAVA언어를 삽입하여 동적 문서를 작성한다.
    • 서블릿의 단점을 보완하고자 만든 서블릿 기반의 스크립트 기술이다.
      • 기초적인 서블릿은 화면 인터페이스 구현에 너무 많은 코드를 필요로 했기 때문
        • 이러한 서블릿 작성 없이도 간편하게 웹프로그래밍을 구현하게 만든 기술이 JSP이다.
  • JSP의 특징
    • 동적 웹 어플리케이션 컴포넌트이다.
    • 클라이언트의 요청에 동적 작동하여 HTML페이지로 변환되어 응답됨.
    • 서블릿으로 변환되어 실행된다.
    • MVC패턴에서의 View로 이용된다.
  • 동작 원리
  1. 클라이언트가 웹 서버에 요청 실행
  2. 웹 서버가 이 요청을 JSP컨테이너로 넘김.
  3. 해당하는 JSP페이지를 찾아 서블릿(java파일)으로 변환
  4. 이를 컴파일한다.
  5. 이렇게 나온 결과가 사용자의 웹 브라우저로 전송된다.
  6. 클라이언트는 결과를 수신함.


  • JSP태그 개념 및 종류
    • 지시자
      • <%@ %>
      • JSP페이지의 전체적인 속성을 지정할 때 사용한다.
      • page, include, taglib가 있다.
      • page
        • 해당 페이지의 전체적인 속성 지정
      • include
        • 별도의 페이지를 현재 페이지에 삽입할 때
          • 현재 문서에 다른 파일의 내용을 포함시켜 출력하는 것을 말한다.
          • 이것도 page속성이 적용된다.
      • taglib
        • 태그라이브러리의 태그사용(jstl을 사용하기 위해 지정)
    • 주석
      • <%-- --%>
      • 주석 처리시 사용.
    • 스크립트릿
      • <% %>
      • Main 메소드의 공간이다.
      • java코드를 넣는 공간.
    • 선언문(declaration)
      • <%! %>
      • 선언문은 class블록 공간이다.
      • JSP페이지 내에서 사용되는 전역번수 또는 메소드를 선언할 때 사용한다.
      • 여기서 선언 변수 및 메소드는 전역의 의미로 사용된다.
        • class블록 내에서 선언되는 변수는 전역의 의미로 사용 가능하다.
      • main 메소드 내에서 메소드를 만들 수 없다.
        • class블록 내에서 메소드를 만들 수 있다.
    • 표현식(expression)
      • <%= %>
      • JSP 페이지 내에서 사용되는 변수의 값 또는 메소드 호출 등 결과값을 출력하기 위해서 사용된다.
      • 결과는 String 타입이며, 세미콜론 사용 불가능.
      • 표현식은 out.print(); 를 대체한다.
    • 액션태그
      • <jsp:action> </jsp:action>
      • 페이지 삽입, 공유, 자바빈 사용 등 수행
      • forward
        • 하나의 JSP페이지에서 다른 JSP페이지로 요청처리를 전달할 때 사용한다.
        • 웹 브라우저의 주소는 그대로 요청받은 JSP주소로 유지된다.
        • 요청 흐름이 이동할 때 request, response 기본 객체가 전달된다.
      • param
        • 데이터를 전달할 때 param 태그 사용.
      • redirect
        • forward와의 차이점
          • forward는 웹 컨테이너 차원의 페이지 이동
            • 웹 브라우저는 다른 페이지로 이동했음을 알 수 없고, 브라우저에 최초 호출한 URL이 표시된다.
            • 요청 정보 유지;
            • 객체 재사용
            • 시스템 변화가 생기지 않는 요청에 적합
            • URL이 바뀌지가 않는다~
            • 여디서 어떻게 로직 처리했는지 클라이언트는 알 수가 없다.
          • redirect는 다른 웹 컨테이너에 있는 주소로 이동 가능
            • 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동
            • 요청 정보 사라짐

  • JSP 내장 객체
    • 개발자가 객체를 별도로 생성하지 않아도 JSP에서 바로 사용 가능한 객체.
    • JSP를 Servlet으로 변환할 때 자동으로 객체가 생성됨.
    • request
      • 웹 브라우저의 요청 정보를 저장하고 있는 객체
      • 웹 브라우저를 통해 서버에 어떤 정보를 요청하는 것.
      • 간단히 말하자면, form에 입력한 요구 사항을 얻어낼 수 있도록 하는 메소드를 제공한다.
      • getParameter
        • 파라미터 변수 name에 저장된 값을 얻어내는 메소드
        • 변수명 없으면 null리턴
        • 단독값을 입력하는 text, select, radio등에 사용
      • getParameterValues
        • 파라미터 변수 name에 있는 모든 값을 얻어내는 메소드
        • 변수명은 String배열로 리턴
        • 다중값을 입력하는 checkbox등에 사용
      • getParameterNames
        • 요청에 의해 넘어오는 모든 파라미터 변수를 java.util.Enumeration타입으로 리턴
      • getContextPath
        • 해당 JSP페이지가 속한 웹 어플리케이션의 context path를 얻음.
      • getMethod
        • 요청에 사용된 요청 방식(GET, POST등…)을 얻음.
      • getSession
        • 세션 객체
      • getProtocol
        • 프로토콜 객체
      • getRequestURL
        • 요청 URL을 얻음.
      • getRequestURI
      • getQueryString
        • 요청한 쿼리스트링을 얻는다.
    • response
      • JSP페이지의 실행결과를 웹 브라우저로 되돌려 줄 때 사용
      • 서버에서 클라이언트에 대한 응답을 response를 통해 처리한다.
      • getCharacterEncoding
        • 응답 시 문자의 인코딩 형태를 구함.
      • addCookie
        • 쿠키 지정
      • sendRedirect
        • 뒤에 변수를 보내려고 하면 get을 사용해서 url뒤에 적어두면 된다.
        • sendredirect는 method의 get방식과 같아서 jsp에서 request.getParameter()로 받을 수 있다.
          • 다만 sendRedirect는 주로 데이터 없이 단순 이동일 때 사용한다.
        • 보통 이거를 쓰는거는 ID랑 비밀번호를 가지고 로그인을 하는 경우 원래대로라면 DB에 있는 것을 꺼내와서 ID와 맞는지 확인하고, 이후 틀리면 데이터 없이 다시 로그인 화면으로 돌려보낼 때 사용하고는 한다.