language/Servlet&JSP
-
서블릿 보안(Security)language/Servlet&JSP 2019. 3. 14. 15:55
이렇게 웹 애플리케이션을 배포하고 나면 불특정 다수의 이용자들이 서버에 접속할 수 있게 됩니다. 이 때 보안은 상당히 중요한 요소입니다. 서블릿 스펙에서는 서블릿 보안을 4가지 개념으로 다룹니다. 인증(Authentication), 인가(Authorization), 비밀보장(Confidentiality), 데이터 무결성(Data Integrity) 가 그것입니다. 인증부터 한 번 알아보도록 하겠습니다. 인증은 접속한 클라이언트가 누군지 파악하는 것입니다. 아이디와 비밀번호를 입력하고 로그인을 하는 것이라고 생각하면 됩니다. 서버는 인증이 필요한 요청을 받으면 www-인증 헤더와 보안영역(realm)정보를 담은 응답을 보냅니다. 401코드를 받아본 브라우저, 보안 영역 정보에 기초하여 사용자 이름과 패스워..
-
배포(Deployment)language/Servlet&JSP 2019. 3. 14. 15:30
컨테이너는 정해진 위치에서 필요한 파일을 찾습니다. 예를 들면 태그 파일은 /WEB-INF/tags 또는 그 하위 디렉토리에서 찾습니다. 해당하는 폴더가 아니면 컨테이너는 그냥 무시하거나 단순히 정적인 컨텐츠로 인식하게 됩니다. 그래서 웹 애플리케이션을 배포할 때는 정해진 위치에 정해진 파일을 배치시키는 것이 중요합니다. 디렉토리 구조를 톰캣을 기준으로 살펴 보겠습니다. 루트폴더 아래에 존재하는 폴더는 각각 웹 애플리케이션의 루트폴더 들입니다. 아래에는 클래스와 라이브러리 배포서술자를 포함하는 WEB-INF 폴더와 메니페스트 파일같은 메타정보가 저장되는 META-INF 폴더가 있습니다. 그리고 그 밖의 공간에 정적인 컨텐츠와 jsp 파일이 존재하게 됩니다. 웹 애플리케이션의 디렉토리 구조는 매우 엄격합니..
-
custom tag 커스텀 태그language/Servlet&JSP 2019. 3. 4. 18:20
마지막은 커스텀 태그를 직접 만드는 것입니다. 커스텀 태그를 만들어서 사용하게 되면 한 번 작성한 태그를 계속 사용하면서 재사용성을 높이게 되고 쉽고 단순하게 JSP를 제작할 수 있게 됩니다. 또한 JSP의 가독성을 향상시킵니다. 직접 커스텀 태그를 만들어 보도록 하겠습니다. 예를 들어 소숫점 이하 특정한 자리 수 까지만 표시하는 커스텀 태그를 만들어 본다고 생각해 보겠습니다. 이런 태그는 존재하지 않기 때문에 우리가 직접 만들어야 합니다. 먼저 심플 태그 핸들러를 만들어 보겠습니다. SimpleTagSupport 클래스를 상속받아서 doTag() 메서드를 override 하면 됩니다. 중요한 점은 태그에 사용할 속성(멤버변수) 들의 setter 메서드가 반드시 존재해야 한다는 것입니다. 그렇지 않으면 ..
-
JSTL(JSP Standard Tag Library)language/Servlet&JSP 2019. 3. 4. 18:18
표준 액션으로 표현이 힘든 코드를 해결하기 위해서 커스텀 태그를 사용하게 됩니다. 하지만 이를 위해서 코드를 짜는 것이 쉬운 일은 아닙니다. JSP 표준 태그 라이브러리 라는 커스텀 태그 표준 라이브러리를 사용하면 이런 부분을 쉽게 해결할 수 있습니다. JSTL 태그의 종류를 간단하게 살펴보고 실제로 어떻게 사용하는지 알아보겠습니다. 책에는 JSTL 태그를 많이 소개하고 있는데 하나하나 다 설명 하는 것은 좀 의미없는 것 같아서 JSTL은 여기서 마치겠습니다.
-
Expression Language 표현식 언어language/Servlet&JSP 2019. 3. 4. 18:11
스크립틀릿을 대체하기 위한 또 다른 방법은 EL(표현식 언어)를 사용하는 것입니다. EL은 달러기호와 괄호 안에 표현하게 되는데 도트 연산자를 이용해서 값에 접근할 수 있습니다. 이 때 도트 왼쪽에는 맵이나 빈이 와야하고, 오른 쪽에는 키 또는 프로퍼티 이름이 와야 합니다. 만약 배열이나 리스트를 받을 때는 [] 연산자를 사용합니다. 기본적으로 attribute를 찾을 때는 작은 범위에서 큰 범위로 넓혀가며 찾게 되는데, page -> request -> session -> application 순서로 찾아 보게 됩니다. 그리고 역시 attribute를 쉽게 찾을 수 있도록 내장 객체를 제공하고 있습니다.
-
표준 액션 태그language/Servlet&JSP 2019. 3. 4. 17:47
jsp에는 표준 액션 태그가 존재합니다. 이 액션태그를 이용하면 스크립팅코드(선언문, 스클립틀릿, 표현식)을 상당부분 대체할 수 있게 됩니다. 미리 정해진 기능들을 JSP 스펙에 명시해두고 컨테이너가 구현하게 만든 태그입니다. jsp라는 접두어를 붙여서 태그명만 명시하면 컨테이너가 알아서 인식해서 수행하게 됩니다. 종류가 많이 있지만 대표적인 것들만 살펴보고 넘어가겠습니다. 서블릿에서 RequestDispatcher 객체의 forward( ) 메소드 기능을 실행하며 다른 페이지로 이동할 때 사용하는 태그입니다.넘기고 나면 그 이전 버퍼는 다 지워지게 된다. 서블릿에서 RequestDistpatch 객체의 include( ) 메소드 기능을 실행하며 다른 페이지를 현재 페이지에 포함하고자 할 때 사용하는 태..
-
JSP lifecycle & JSP에서 Servlet으로 변환하기language/Servlet&JSP 2019. 3. 4. 17:42
클라이언트 요청을 받은 컨테이너가 매핑된 서블릿을 찾아서 service() 메소드를 실행시키는 것, 그리고 서블릿이 존재하지 않으면 클래스를 로드해서 인스턴스를 생성하고 초기화 시킨다는 것 까지 지난시간에 살펴 본 내용입니다. 컨테이너가 하는 일 중 또 다른 한 가지는 JSP 요청을 처리하는 것입니다. JSP는 HTML 코드 안에 JAVA 코드가 포함된 형태를 가지고 있습니다. 하지만 일단 객체가 만들어지면 동작하는 방식은 servlet과 똑같습니다. 쉽게 말하자면 JSP는 포장된 servlet이라고 할 수 있습니다. 컨테이너가 서블릿 객체를 이용하고 싶으면 일단 jsp의 겉포장을 벗겨 내야 합니다. 이렇게 번거로운 작업을 하게 된 것은 코드 작성의 편의성을 위한 것입니다. 포장을 벗겨낸다는 것은 결국 ..
-
HTMLlanguage/Servlet&JSP 2019. 3. 4. 17:32
HTML은 HyperTextMarkupLanguage의 약자 입니다. 여기서 하이퍼 텍스트가 의미하는 것은 하이퍼링크를 통해 비선형적으로 이어지는 텍스트를 의미합니다. 비선형적이라는 말은 책과 같은 문서처럼 순서대로 텍스트가 이어지는 것이 아니라 전혀 관계 없는 텍스트가 비선형적으로 이어지는 것을 의미합니다. 이를 가능하게 해주는 것이 하이퍼 링크로 문서와 문서사이를 연결해 주는 역할을 합니다. 마크업 언어라는 것은 문서가 화면에 표시되는 형식을 나타내거나 데이터의 논리적 구조를 명시하기 위한 규칙을 정의한 언어를 말합니다. 배포서술자에서 사용했던 xml 역시 마크업 언어의 일종입니다. HTML은 태그를 통해 기술이 됩니다. 태그는 HTML에 사용되는 명령어의 집합으로 이해할 수 있습니다. 보통 여는태그..