2017-03-05 1 views
1

에서 JSP가 접근 불가합니다, 그래서이 수행하여 변수를 전달할 수 있습니다 :은 "파일 시스템"없이내가 서블릿에서 열 가져옵니다 JSP가 외부

RequestDispatcher dispatcher = request.getRequestDispatcher("/Page.jsp"); 
request.setAttribute("filesystem", getFileSystem()); 
dispatcher.forward(request, response); 

을 변수 JSP는을 제외하고 내용이 없을 것 사이드 바 및 헤더 메뉴.

내 문제는 사용자가 여전히 website.com/Page.jsp을 브라우저에 입력하여 JSP를 호출 할 수 있다는 것입니다.

어쨌든 사용자가이 작업을 중단시키지 않았습니까?

+0

사용자가 특정 페이지에 액세스하지 못하도록 제한하려면 세션 관리를 사용해야합니다. –

+2

JSP를 WEB-INF에 넣으십시오. –

+0

@MouadELFakir 이것이 내 문제에 대한 올바른 대답 인 것 같습니다.] –

답변

1

실제로 파일을 WAR 파일의 모든 위치에 넣을 수 있지만 WEB-INF 디렉토리에 넣으면 외부에서 직접 액세스 할 수 없습니다.

는 다음을 고려하여 이러한 변경 사항을 적용하려면 코드를 다시 적응 :

RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/Page.jsp"); 
//... 
dispatcher.forward(request, response); 
0

당신은 외부에서 액세스하는 사용자가 액세스 할 수없는 WEB-INF 디렉토리 내부에 JSP를 배치해야합니다. 기술적으로 서블릿 컨테이너는 WEB-INF 디렉토리의 내용을 제공하지 않으므로 JSP는 직접 액세스로부터 안전합니다.

예 :

<servlet> 
     <display-name>userdata</display-name> 
     <servlet-name>userdata</servlet-name> 
     <jsp-file>/WEB-INF/userdata.jsp</jsp-file> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>userdata</servlet-name> 
     <url-pattern>/userdata</url-pattern> 
    </servlet-mapping> 

참고 : 더 편리한 방식으로 그런 사소한 일을 처리 스트럿츠, 스프링 같은 프레임 워크를 사용하는 것이 좋습니다.

관련 문제