누구나 서블릿을 통해서만 웹 사이트의 리소스에 액세스 할 수있는 솔루션이 있는지 알고 싶습니다. WEB-INF에 모든 자료가 있습니다. 즉, 사용자가 내 리소스에 직접 액세스하지 못하도록하고 싶습니다.서블릿을 통해 리소스 (CSS, HTML, 이미지, JS)에 액세스
3
A
답변
5
ServletContext#getResource()
을 사용할 수 있습니다.
URL resource = getServletContext().getResource("/WEB-INF/file.ext");
File file = new File(resource.getPath());
// ...
당신은 직접 InputStream
얻을 ServletContext#getResourceAsStream()
를 사용할 수 있습니다
InputStream input = getServletContext().getResourceAsStream("/WEB-INF/file.ext");
// ...
의 ServletContext
상속 된 GenericServlet#getServletContext()
방법으로 서블릿에서 사용할 수 있습니다.
문구 나는 사용자가 내 자원의에 직접 액세스 할 수 싶지 않아, 말했다.은 약간 모순입니다. 어쨌든 서블릿으로 리소스를 제공하고 있습니까? 서블릿은 URL로 직접 액세스 할 수 있습니다. "직접 액세스"와 다른 점은 무엇입니까? 또는 일부 조건에 따라 액세스를 제어하고 싶습니까? 나는
Filter
이이 작업에 더 적합하다고 말하고 싶습니다.
일반적으로 JSP 파일은 직접 액세스하지 못하도록합니다. MVC 패턴에 따라 전면 제어기 역할을하는 서블릿에서 ServletRequest#getRequestDispatcher()
으로 차례로 얻을 수있는 RequestDispatcher#forward()
을 사용하여 JSP 파일로 요청을 전달할 수 있습니다.
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
0
최종 사용자에게 jsp를 숨길 수 있습니다. CSS 파일을 사용하지 않는 /됩니다
http://tomcat.apache.org/tomcat-5.5-doc/jasper-howto.html#Web%20Application%20Compilation
을 및 HTML /의 JS를 숨길 수있는 유일한 방법 : 사실, 당신도 당신의 웹 응용 프로그램과 함께 원래의 JSP 파일을 배포 할 필요가 없습니다, 당신은 그들을 미리 컴파일 할 수 있습니다. 브라우저로 전송 된 내용은 모두 여기에서 볼 수 있습니다.
관련 문제
- 1. HTML/CSS 이미지 격자
- 2. css url에서 ClientBundle 이미지 리소스 사용하기
- 3. 서블릿을 통해 양식 제출
- 4. 이미지, css 및 js에 대한 스테이징 서버 .htaccess
- 5. CSS 속성이 지원되는지 여부를 JS에 체크인 하시겠습니까?
- 6. 서블릿을 사용하여 이미지 표시
- 7. html css - 이미지 선택 배경색
- 8. html 파일에서 서블릿을 연결하는 방법
- 9. jsfiddle에서 이미지 리소스 얻기
- 10. WinForms UserControl 이미지 리소스
- 11. jQuery를 통해 JS에 PHP 결과 전달 .get
- 12. 서블릿을 통해 동적 체크 박스를 생성 하시겠습니까?
- 13. CSS 클래스를 통해 ASP.net 버튼 이미지 지정
- 14. SASS 이미지 CSS 캐쉬 파열 (컴퍼스를 통해)
- 15. 팝업의 확장 가능한 배경 이미지. html, css
- 16. HTML/CSS - 그림자 이미지 크기 조정
- 17. 이미지 뷰 웹 이미지 리소스
- 18. CSS를 통해 HTML 콘텐츠에 액세스 하시겠습니까?
- 19. 스위치를 통해 연결된 컴퓨터를 통해 서블릿에 액세스
- 20. HTML 페이지의 XML을 통해 이미지 경로가 필요합니다.
- 21. ASP.net 웹 리소스 대 이미지
- 22. WPF : 컨트롤 어셈블리의 리소스 액세스
- 23. Modx 혁명 액세스 리소스
- 24. 리소스 번들 - 액세스 키
- 25. apk의 액세스 리소스
- 26. 자바 서블릿을 사용하여 사후 변수에 액세스
- 27. 서블릿을 웹 서비스에 이식 - 컨텍스트에 액세스 하시겠습니까?
- 28. gwt css 사용자 공유 리소스
- 29. 레일스가 link_to를 통해 로컬 파라미터를 js에 전달한 다음 부분적으로로드합니다.
- 30. HTML, CSS, SVG로지도 만들기?
원래 질문에 "사용자가 직접 URL을 입력하여 브라우저에서 리소스를 볼 수 없도록하고 싶습니다."라고 생각했습니다. WEB-INF 로의 "직접 접근"을 방지하고 서블릿이 자원에 접근하게하는 파일을 저장하는 것은 나에게 "최상의 방법"과 같이 들린다. – WineSoaked
@WineSoaked : MVC로 제어되는 완전한 애플리케이션에서보기를 숨기고 싶기 때문에 일반적으로 JSP 파일에만 관심이 있습니다. CSS/HTML/Images/JS와 같은 정적 리소스의 경우? 아닙니다. 문제는 다르게 해결되어야합니다. 실제 기능 요구 사항이 불분명하기 때문에 분명하지 않습니다. – BalusC
당신은 좋은 지적입니다. 하지만 서블릿이 런타임에 리소스를 생성하는 경우 (내 경험에 대해 전례가 없지만). 이 CSS/HTML/JS/등의 조각이있는 경우. 서블릿을 통해 처리되는 것은 그럴듯한 용도입니다. 그러나 WEB-INF의 바이트를 아무 것도하지 않고 브라우저로 퍼널하는 경우 서블릿은 프록시 역할을 수행하고있어 적합하지 않습니다. – WineSoaked