[英]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.