본문 바로가기

Spring

Web.xml/ JSP Mapping / contextPath/ contextRoot

Web.xml 이란? 

 Deployment Descriptor(배포서술자)라고도 불림

모든 web application은 반드시 하나의 web.xml파일을 가짐 (위치: WEB-INF 하단)

web.xml의 파일 설정은 web application 시작시 메모리에 로딩됨

 

 

 

웹 서버에 request가 올 때 web.xml파일로 가서 request를 받은 URL의 매핑값을 해당 요청을 처리하기 위한 특정 코드와 연결시키는 역할을 함

만약 request가 온다면 해당 url pattern에 담긴 servlet mapping 값과 연결됨

만약 해당 url pattern과 일치하는 servlet 매핑값이 있다면 해당 servlet class 으로 이동

 

 

포함되는 내용들

  • ServletContext의 초기 파라미터
  • Session의 유효시간 설정
  • Servlet/JSP에 대한 정의
  • Servlet/JSP 매핑
  • Mime Type 매핑
  • Welcome File list
  • Error Pages 처리
  • 리스너/필터 설정
  • 보안

 

 

 

 

매핑

매핑이란 해당 값이 다른 값을 가리키도록 하는 것이다.
예를들면  http://localhost:8080/action.do 라는 페이지를 만들었다고 했을시 이 url이 그대로 노출된다면 보안상 매우 취약 할 수 있을 것이다. 그래서 action.do가 아닌 ac.do가 action.do랑 똑같다는 식으로 설정하여 ac.do로 갔을 때 action.do로  가게 함으로서 보안성을 높일 수 있다.

 

또한 Mapping을 하는 이유는 보이는 바와 같이 일단 주소가 간결해 지는 것에 있다. 클라이언트 입장에서 full path를 이용해 웹 페이지에 접속하는 것은 정말 짜증나고 귀찮은 타이핑이 될 것인데 이를 확 줄여 이용자가 훨씬 편리하게 웹 사이트를 이용 할 수 있게 된다.

그렇다면 JSP에서 어떻게 이 매핑을 할 수 있을까?

1. web.xml에서 하는 방법
web.xml의 파일에서 매핑을 할 수 있으며 기본 양식은 아래와 같다.

<web-app>
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>com.javalec.HelloWorld</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/Hw</url-pattern>
    </servlet-mapping>
</web-app>

 

web.xml에서 <servlet>태그와 <servlet-mapping>태그를 이용해 서블릿을 매핑한다.
<servlet-name> 태그의 값 aaa와 bbb가 <servlet>과 <servlet-mapping>을 연결시켜 준다.

  • <servlet> : 브라우저에서 요청하는 매핑 이름에 대해 실제로 실행하는 서블릿 클래스를 설정하는 태그
  • <sevlet-name> : <servlet>과 <servlet-mapping>을 연결 시켜주는 태그
  • <servlet-class> : 브라우저에 요청하는 매핑 이름에 대해 실제로 기능을 수행하는 서블릿 클래스
  • <servlet-mapping> : 브라우저에서 요청하는 논리적인 서블릿을 설정
  • <url-pattern> : 클라이언트가 요청하는 논리적인 서블릿 이름

 

 

2. Java Annotaion 하는 방법

 

에너테이션이란?
애너테이션은 소스 코드에 추가하여 사용할 수 있는 메타데이터(데이터를 위한 데이터)의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. 간단히 말하면 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 제공하는 것이다.

여러 서블릿을 web.xml에 설정할 경우 복잡해진다는 단점이 있다. 따라서 각 서블릿 클래스에 기호(@)를 이용해서 서블릿 표시를 해주면 훨씬 가독성이 좋아진다.

 

 

 

 

Context Path : 프로젝트 명을 의미하며 url의 호스트, 포트명 다음에 나온다. 
Context root : Content directory의 경로. 해당 경로에 메타 정보와 웹 정보를 관리하는 META-INF와 WEB-INF 파일이 자동생성되a며 JSP파일은 여기 하위에 저장되어야 경로를 찾을 수 있다.

 

 

 

welcome-file-list in web.xml

web application의 요소로서 welcome 파일 리스트 정의에 사용됨

하위요소는< welcome-file>로 welcome file을 정의하는데 사용됨

welcome file이란 서버에 의해 자동으로 활성화되는 파일

default로 서버는 web.xml에서 아래 순으로 파일을 찾음

  1. index.html
  2. index.htm
  3. index.jsp

만약 상기 파일들을 찾을 수 없다면, 404 에러 발생

 

 

 

-------

절대경로와 상대경로

 

  절대 경로와 상대 경로의 정의

 절대 경로는 처음부터 시작하여 목적지까지의 절대적인 경로를 의미합니다. 시작 지점부터 목표지점까지의 어느 누가 봐도 절대적으로 이곳을 가리킬 수 있는 곳입니다. 특징은 최상위 /를 포함하고 있습니다.

 

상대 경로는 현재 위치를 기준으로 하여 목적지까지의 상대적인 경로를 의미합니다. 자신보다 앞에 있는가? 뒤에 있는가? 동서남북으로 어느 방향으로 가야 하는가? 등, 누가 어디서 시작하느냐에 따라서 도착지가 달라질 수가 있습니다. 특징은 최상위 /를 거치지 않고도 이동이 가능합니다.

 

 

 

  절대 경로와 상대 경로의 차이

  절대경로 상대경로
컴파일 속도 느리다 빠르다
해당 소싀의 위치 변환 시 경로를 다시 지정 기준이 된 폴더의 구성이 달라지지 않는 한 경로지정을 할 필요가 없다.
분실 가능성 낮다 높다
사용할 때 타 개발자의 소스 링크시 개발팀 내에서 소스 링크 시

 

 

 

  상대경로

기호 기능
./ 현재 위치
../ 현재 기준, 상위 디렉토리 위치
./mollang/ 현재 기준, 하부 mollang 디렉토리 위치

상대 경로는 현재 위치를 가장 중요하게 여깁니다.

그래서 가장 중요한 Point는 바로./ 이 부분입니다.

/ 앞에. 이 붙어 있어서 현재의 위치에 대한 정보를 나타냅니다.

 

우리는 이. 하나만으로 경로를 구분 짓고, 아무런 문제 없이 파일을 불러올 수 있습니다.

 

대표적인 예시 하나를 두겠습니다.

<link rel="stylesheet" href="./css/layout.css" type="text/css" media="all"/>

 

현재 위치를 기준으로 css디렉터리 안의 layout.css를 불러옵니다. 경로의 제일 앞에.으로 구분되는 것을 확인할 수 있습니다.

 

 

 

  절대 경로

 대표적인 방법은 / 이 있습니다.

 

url의 구성은 다음과 같습니다.

IP1.IP2.IP3.IP4(localhost):포트번호/프로젝트명/경로명

여기서 /란, 포트 다음의 /를 나타냅니다.

절대경로 사용시 프로젝트 명 추천

/은 포트 다음의 폴더 경로를 의미합니다. 만약 Path에 프로젝트명이 존재할 경우 /의 기능이 상실하게 되므로 주의하셔야 합니다.

 

이유는 /에는 프로젝트의 경로명이 포함되어있지 않기 때문입니다.

 

만약, 여기서 나는 프로젝트 명도 입력하고 싶다. 또는 그에 상관하고 싶지 않다 하고 싶은 분께서는 아래의 코드를 경로에 추가적으로 입력해주셔야 합니다.

 

 

 

 

 

http://wiki.gurubee.net/pages/viewpage.action?pageId=26740333 

 

web.xml의 이해(개요,기능,활용) - [종료]구루비 Dev 스터디 - 개발자, DBA가 함께 만들어가는 구루비

 

wiki.gurubee.net

https://threeidiotscoding.tistory.com/26

 

Web에서 매핑이란? JSP Mapping

매핑이란 해당 값이 다른 값을 가리키도록 하는 것이다. 예를들면 http://localhost:8080/action.do 라는 페이지를 만들었다고 했을시 이 url이 그대로 노출된다면 보안상 매우 취약 할 수 있을 것이다. 그

threeidiotscoding.tistory.com

https://urakasumi.tistory.com/159

 

web.xml - <welcome-file-list> 란?

웹사이트의 root("/")경로로 접속할때 불러올 파일을 지정한다. index.html index.htm index.jsp default.html default.htm default.jsp 서버를 실행시키고 "localhost:8080/" 로 접속시 먼저 가장 첫번째 인 index.html을 불러

urakasumi.tistory.com

 

'Spring' 카테고리의 다른 글

MVC (Model-View-Controller) 패턴  (0) 2023.03.29
Spring MVC프로젝트의 폴더 구조  (0) 2023.03.28
Spring2: root-context.xml  (0) 2022.12.29
Spring - Context Hierarchy  (0) 2022.12.29
Spring 1 : web.xml (배포서술자 /Deployment Descriptor)  (0) 2022.12.29