Struts 등의 MVC 패턴 프레임웍을 사용할 경우에는 컨트롤러가 호출하는 자바 클래스에서 로직 처리를 끝내고서 JSP파일로 포워딩을 한다.

여기서 JSP파일은 실제로 웹 브라우저의 주소창에 나타나지 않는다.

포워딩을 할 경우 포워딩 시키기 전에 웹브라우저가 호출한 주소가 남아 있고, 포워딩된 주소는 단지 서버측에서 실행되어 결과만을 웹브라우저로 전달한다.

JSP/Servlet 컨테이는(앞으로는 웹 컨테이너)는 WEB-INF 디렉토리 이하를 보안상의 문제로 웹 브라우저를 통한 접근을 금지하고 있다. 하지만 포워딩을 통한 접근은 웹 브라우저를 통하지 않기 때문에 가능하다.

MVC 패턴에서 뷰로 사용되는 JSP 페이지들은 컨트롤러를 통하지 않고서 직접 액세스 될 필요가 전혀 없고 어떤 경우에는 그렇게 되면 안되는 때도 있다.

그래서 뷰로 사용되는 JSP 페이지를 WEB-INF 아래에 두는 것을 권장하는 것 같다.
그럴 경우, 결코 웹 브라우저를 통한 직접 액세스가 불가능하므로, 컨트롤러를 통해서 액세스 됨을 보장할 수 있기 때문이다.

또 다른 문제로, 로그를 웹 컨텍스트 디렉토리에 그대로 남기는 경우가 있는데, 절대로 그래서는 안 될 것 으로 보인다.
많은 사람들이 로그에 접속한 사람의 ID와 비밀번호, 그리고 주민등록번호등을 남기기도 하는데, 이것을 웝 컨텍스트 디렉토리에 둘 경우 우연찮게 유출될 가능성이 매우 높다. 로그 파일들도 WEB-INF 디렉토리 아래에 두거나, 아니면 웹 컨텍스트와 전혀 상관없는 디렉토리에 둬야 할 것으로 보인다.
제일 좋은 것은 웹 컨텍스트와 전혀 다른 디스크 파티션에 두는 것일 것 같다.
그렇게 하면 서로 다른 디스크를 사용하므로 시스템 성능 향상도 가져올 것이다.
 

출처 - http://blog.naver.com/reomereome?Redirect=Log&logNo=40014897720

'Development > JSP & Servlet' 카테고리의 다른 글

JSP에서 JSTL과 EL(Expression Language) 사용하기  (0) 2012.03.28
contentType charset과 pageEncoding의 차이점  (0) 2012.03.28
request.setCharacterEncoding  (0) 2012.03.23
JSP  (0) 2012.02.05
서블릿 Invoker  (0) 2011.12.29
Posted by linuxism
,