2009-11-24 5 views
2

나는 사소한 일을하려고 애쓰며 내가 무엇을 놓쳤는지를 볼 수 없습니다. 나는 다음과 같은 web.xml을 ...web.xml 필터 매핑이 스트럿으로 전달되지 않습니다.

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>*.do</url-pattern> 
</filter-mapping> 
<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>*.action</url-pattern> 
</filter-mapping> 

이 내가 "http://localhost:8080/gallery.action"와 같은 URL을 사용하는 경우 ("갤러리"는 등, 등, 제대로 struts.xml에서 구성되어 있기 때문에), 모든 것이 잘 작동합니다.

그러나 "http://localhost:8080/gallery.do"을 클릭하면 404 응답이 표시됩니다. Tomcat은 struts 측에 로깅이 없으므로 요청을 struts로 전달하지 않는 것 같습니다. Tomcat 로그에 404가 표시됩니다.

필터 매핑을 * .blah로 변경하려고했는데 * .action을 제외하고는 아무 것도 작동하지 않았습니다. 기본 web.xml 파일에 충돌 정보가 표시되지 않습니다.

누구나 내가 아는 바를 알고 계신가요?

+0

'struts.xml'은'gallery.do'로 무엇을 해야할지 알도록 구성되어 있습니까? 아마 필터 전달 잘 작동하지만 Struts 잘못 구성되어 있습니다. – skaffman

+0

struts.xml은 "gallery"라는 작업 이름을 처리하도록 구성되었지만 .action (또는 .do) 확장자에 대해서는 아무 것도 모릅니다. 스트럿츠가 단순히 액션 이름을 얻기 위해 확장 기능을 중단한다는 것은 제 이해입니다. –

+0

또한 잘못된 작업 이름을 입력하면 struts는 많은 로깅을 수행합니다 ... gallery.do를 입력하면 struts 로그에 아무런 활동이 없으므로 안전하다고 생각하기에 안전하다고 생각합니다 . –

답변

-1
당신이 .action *에 대한 <servlet-mapping>을 할 수 있기 때문이다

하지만 * 없음 <servlet-mapping>

+1

* .action 또는 * .do ...에 대한 서블릿 매핑이없고 web.xml과 서버의 기본 web.xml 파일을 모두 확인하고 있습니다. –

+0

나는 본다. [struts2] 태그를 살펴 보았습니다. – Salandur

2

은 분명히 Struts2는 기본적으로 .action 확장을 인식하고 하나가 원하는 사용 스트럿과 같은 다른 확장을 구성해야합니다 수도 있었죠. 특성 파일 :

struts.action.extension = 동작을 수행 등

이 대부분의 문서는 독점적으로 필터 매핑을 사용하여 스트럿에 전달하는 방법에 대해 설명 주어진 매우 오해의 소지가 있었다.

관련 문제