你如何拥有grails应用程序以及web.xml中定义的其他servlet?
我想拥有它,以便一些url模式由servlet处理,而所有其他模式由Sitemesh/grails处理.
grails生成的web.xml的默认配置是:
<filter-mapping>
<filter-name>charEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>grailsWebRequest</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>urlMapping</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>grails</servlet-name>
<servlet-class>org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
然后我将配置添加到我的第二个servlet的web.xml:
<servlet>
<servlet-name>Tracepoints</servlet-name>
<servlet-class>com.mydomain.Tracepoints</servlet-class>
<init-param>
<param-name>hostName</param-name>
<param-value>http://www.mydomain.com/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Tracepoints</servlet-name>
<url-pattern>*.tpoints</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
但上面的内容不允许我访问我的非grails servlet(使用url:domain.com/hello.tpoints)并尝试获取404.我知道servlet的类文件是随战争部署的,因为它们存在于WEB-INF/classes目录中.
您需要url-pattern在映射中为 Grails servlet 提供更具体的信息,例如/grails/*左右*.grails(您可以自由选择),以便只有与这些模式匹配的 URL 才会调用 Grails servlet。
| 归档时间: |
|
| 查看次数: |
2418 次 |
| 最近记录: |