다음과 같이 두개의 test.jsp 파일이 있다.

하나는 web폴더(webContent)에 있고 하나는 web폴더의 하위 폴더인 WEB-INF 폴더에 있다. 

그럼 우선 web 폴더에 있는 test.jsp 파일에 접속해보겠다.

다음과 같이 web의 test.jsp 파일에 정상 접속되는 것을 확인할 수 있다.

그럼 이번엔 WEB-INF의 test.jsp 파일에 접근해보도록하자

다음과 같이 404 오류가 발생한다.

이유는 무엇일까?

web폴더(WebContetn폴더 앞으로 web 폴더라고 지칭함)에 파일이 있을 경우 비즈니스 로직없이도 가상의 결과물을 만들어 직접적으로 뷰를 살펴 볼 수 있다.

그렇기 때문에 우리가 localhost:8090/test.jsp로 접속시 해당 페이지를 볼 수 있었던 것이다.

 

그렇다면 WEB-INF 폴더에 있는 test.jsp 파일은 왜 볼 수 없었던 것일까?

WEB-INF 폴더의 경우 브라우저에서 직접적으로 접근이 불가한 경로다.

우리가 앞서 살펴본 localhost:8090/test.jsp와 직접 같이 접근이 불가하다는 것을 의미한다.

 

이로인해 발생할 수 있는 장점과 단점은 무엇인가?

web 폴더와 WEB-INF의 장점과 단점
web 폴더
장점 web 폴더에 있을 경우 바로 jsp파일을 볼 수 있다. 앞서 확인한 것과 같이 작성한 jsp 파일의 경과를 바로 볼 수 있다.
단점 web 폴더로 작성을 완료하고 프로젝트를 서버에 올릴 경우 유저가 jsp 파일에 직접 접근할 수 있어 보안의 취약함이 발생할 수 있다.
WEB-INF 폴더
장점 WEB-INF 폴더에 있을 경우 localhost:8090/WEB-INF/test.jsp로 접근이 불가하다. 이로인해 유저의 직접 접근이 어렵워 보안성이 높다.
단점 직접적으로 view를 볼 수 없다. 또한 직접적으로 볼 수 없기 때문에 <a> 앵커 태그로 이동이 불가하며 Controller를 통해서만 이동을 해야 한다.

 

<결론>

결론을 내리자면 다음과 같이 web과 WEB-INF 폴더를 적절히 이용하면 좋을 것 같다.

1. 작성한 jsp 파일을 바로 view로 보길 원할 경우 web 폴더로 이동

2. 외부 유저가 접근해도 문제없고 본인이 web 폴더에 jsp 파일을 두길 희망할 경우 web 폴더로 이동

3. 보안을 원한다면 WEB-INF 폴더로 이동하도록하자

4. 프로젝트를 서버에 올린다면 가급적 web에 jsp 파일을 두지말고 WEB-INF 폴더에 둬서 직접 접근이 불가능하도록하자.

 

 

web과 WEB-INF 폴더에 대한 차이는 충분히 알았으리라 생각된다.

그렇다면 이번에 WEB-INF 폴더의 단점으로 다뤘던 앵커 태그로 이동에 관해서 자세히 보도록하자

다음과 같이 두개의 파일이 있다.

프로젝트가 실행되면 WAS의 welcom-file-list로 인해 index.jsp 파일이 실행된다.

여기서 알 수 있듯이 아래 앵커 태그를 클릭하면 test2.jsp 파일로 이동할 수 있다는 것을 알 수 있다.

이것은 기본적인 부분이기 때문에 누구나 알 것이다.

그럼 이번에 WEB-INF jsp 파일을 넣어서 확인해보도록하자.

필자는 다음과 같이 /WEB-INF/views/main/index.jsp 파일로 접속 후 동일한 폴더에 있는 test.jsp 파일로 이동하려고한다.

그럼 앵커 태그를 이용하여 이동하도록하자.

다음과 같이 이동을 클릭하면 /WEB-INF/views/main/test.jsp로 이동되어야 한다.

그런데 ./test.jsp로 설정하였으나 아래와 같이 경로는 /test.jsp로 표시되고 

실제 이동시도 web 폴더의 test.jsp로 이동되는 것을 확인할 수 있다.

그럼 이번에는 절대 경로로해서 무조건 이동하도록 설정을 해보도록하자.

다음과 같이 절대 경로를 설정하였다.

이동시 다음과 같은 오류가 발생한다.

이유는 다음과 같다. 앞서 설명한 것과 같이 WEB-INF로의 직접 이동이 불가능하다.

그렇기 때문에 앵커 태그를 이용한 직접 이동이 불가능한 것이다.

그렇기 때문에 만약 다른 페이지로 이동을 원할 경우 우리가 구성한 비즈니스 로직인 Controller를 통해서만 이동을 해야한다.

만약, 이동을 원할 경우 앞서 확인한 오류가 발생되지 않도록 가급적 WEB-INF에서는 앵커태그가 이용이 어려우므로 앵커 태그를 사용하여 직접 jsp 파일로 이동하지말고 Controller를 이용하여 해당 페이지로 이동하도록 작성을 하도록하자

다음과 같이 .do로 앵커 태그를 구성한다.

그럼 다음과 같이 페이지 이동 버튼을 클릭할 경우

다음과 같이 원하는 페이지로 이동할 수가 있다.

+ Recent posts