![](/img/trans.png)
[英]Is it possible to pass an image from Android phone to Java Servlet from processing and get back the modified image
[英]Java Servlet: pass a request back to default processing
我希望Servlet根據前綴和擴展名來處理對文件的請求,例如
前綴_ *。xml的
由於無法在請求路徑的開頭和結尾進行映射,因此我已將所有* .xml請求映射到我的Servlet。 現在的問題是:如何針對非以“ prefix_”開頭的XML文件退出servlet,以便像處理XML文件的“普通”請求一樣處理請求?
這可能很簡單,但我似乎無法找到...:-/
提前謝謝
另一個解決方案(也許適合您)是,如果您正在/計划在該Web容器實例之前使用Apache,則可以使用apache的重寫模塊。 將URL重寫為更易於處理的Webapp容器。
希望這可以幫助。 大衛。
不是很清楚,但是一旦捕獲了所有* .xml請求,就可以通過HttpServletRequest.getRequestURI()在代碼中再次檢查該請求。
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String uri =req.getRequestURI();
int i = uri.lastIndexOf('/');
int j = uri.lastIndexOf('.', i);
if (uri.substring(i+1, j).startsWith("prefix_")) {
// your code
}
}
(代碼未經測試,只是一個主意...)
我強烈建議為此使用適當的MVC框架。 正如您所發現的,在請求分派時,標准Servlet API的靈活性非常有限。
理想情況下,您將能夠將現有的Servlet代碼與MVC框架結合使用,該框架基於路徑模式進行透徹,而Servlet則進行業務邏輯。 幸運的是,Spring MVC允許您使用ServletForwardingController做到這一點。 這將是一個非常輕量級的spring配置。
因此,您的web.xml中將包含以下內容:
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>foo.MyServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<url-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*</url-pattern>
</url-mapping>
然后,您將獲得一個WEB-INF / spring-servlet.xml文件,如下所示:
<beans>
<bean name="/prefix*.xml" class="org.springframework.web.servlet.mvc.ServletForwardingController">
<property name="servletName" value="myServlet"/>
</bean>
</beans>
那就差不多了。 對/prefix*.xml的所有請求都將發送到myServlet,而所有其他請求將落入容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.