2010-05-05 4 views
3

먼저 Google AppEngine 및 Guice를 사용하고 있지만 내 문제는 관련이 없다고 생각됩니다.HTML 페이지를 직접 제공 할 때 서블릿 필터를 어떻게 적용합니까?

사용자가 내 (GWT) webapp에 연결하면 URL은 직접적인 html 페이지입니다. 예를 들어 개발 모드에서는 http://127.0.0.1:8888/Puzzlebazar.html?gwt.codesvr=127.0.0.1:9997입니다. 지금, 나는 설정 내 web.xml 다음과 같은 방법 :

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
version="2.5"> 
<display-name>PuzzleBazar</display-name> 

<!-- Default page to serve --> 
<welcome-file-list> 
    <welcome-file>Puzzlebazar.html</welcome-file> 
</welcome-file-list> 


<filter> 
    <filter-name>guiceFilter</filter-name> 
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>guiceFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<!-- 
    This Guice listener hijacks all further filters and servlets. Extra 
    filters and servlets have to be configured in your 
    ServletModule#configureServlets() by calling 
    serve(String).with(Class<? extends HttpServlet>) and 
    filter(String).through(Class<? extends Filter) 
--> 
<listener> 
    <listener-class>com.puzzlebazar.server.guice.MyGuiceServletContextListener 
    </listener-class> 
</listener> 

</web-app> 

그리고 내 appengine-web.xml입니다 : 내가 Guice를 사용하고 있기 때문에

<?xml version="1.0" encoding="utf-8"?> 
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
    <application>puzzlebazaar</application> 
    <version>1</version> 
    <sessions-enabled>true</sessions-enabled> 

    <!-- Configure java.util.logging --> 
    <system-properties> 
     <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>  
    </system-properties> 

</appengine-web-app> 

, 나는 내가 할 경우, 내 ServletModule에 추가 필터를 구성해야 이 :

filter("*.html").through(SecurityCookieFilter.class); 

그러나 내 SecurityCookieFilter.doFilter은 호출되지 않습니다. 나는 "*.html*" 또는 <url-pattern>*</url-pattern>과 같은 것을 시도했지만 아무 소용이 없습니다. 어떻게해야합니까?

+0

".html"대신 ".jsp"로 전환하여 작동하는 것으로 나타났습니다. –

답변

3

아마도 appengine-web.xml에서 정적 콘텐츠로 제공되도록 html 파일을 구성했을 것입니다. 정적 파일 제공은 앱을 전혀 포함하지 않으므로 출력을 필터링 할 수 없습니다. 당신의 필요가 GAE 정적 HTML 파일에 대한 특정 HTTP 응답 헤더를 추가하기 위해 (광산 등)로 발생하는 경우

+0

감사합니다. 거기에 appengine-web.xml을 추가했습니다. 뭐가 없니? –

+0

HTML이 정적 파일로 제공되고있는 것처럼 보입니다. 내가 말했듯이, 그것은 여러분의 코드에 전혀 영향을주지 않습니다. 포스트 프로세싱을 원할 경우 파일을 제공하는 서블릿을 생성해야합니다. –

1

,이 같은에서 appengine-web.xml을 그들에게 정적 리소스를 선언하여이 작업을 수행 할 수 있습니다 :

<static-files> 
    <include path="/my_static-files" > 
    <http-header name="Access-Control-Allow-Origin" value="http://example.org" /> 
    </include> 
</static-files> 

내가 이것을 찾았습니다. GAE documentation

+0

사람들에게 많은 문제를 줄여 줄 수 있기 때문에 그걸 환호합니다. 불행히도 나에게 이것은 도메인의 301 리다이렉션 (www. naked)을 원하기 때문에 완벽하지 못하다. 그래서 도메인 애트리뷰트가 경로 1처럼 지원한다면 완벽 할 것이다. 위치 헤더 제공). 하지만 AFAIK (그리고 나머지 문서를 읽은 후에는) 불가능합니다. –

관련 문제