Java Servlet映射:仅当文件或目录没有';不存在?
我正在GlassFish上设置一个web应用程序,我想知道是否有一种方法可以将URL根目录中的servlet映射配置为仅适用于指定URL中不存在文件或目录的情况 目前,这将通过我的Spring dispatcher路由所有内容:Java Servlet映射:仅当文件或目录没有';不存在?,java,servlets,jakarta-ee,glassfish,glassfish-3,Java,Servlets,Jakarta Ee,Glassfish,Glassfish 3,我正在GlassFish上设置一个web应用程序,我想知道是否有一种方法可以将URL根目录中的servlet映射配置为仅适用于指定URL中不存在文件或目录的情况 目前,这将通过我的Spring dispatcher路由所有内容: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.
<?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_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>
/jsp/index.jsp
</welcome-file>
</welcome-file-list>
</web-app>
调度员
org.springframework.web.servlet.DispatcherServlet
1.
调度员
/
/jsp/index.jsp
除非给定路径上存在文件或目录,否则是否有可能保留上述行为?我试图在错误的地方解决这个问题吗
更新:URL重写怎么样?GlassFish是否提供了Apache与mod_rewrite一样的灵活性?这样,我甚至可以在它到达servlet映射阶段之前拦截它。很有技巧,但可行:在
404的
上将它映射为
<servlet>
<servlet-name>errorServlet</servlet-name>
<servlet-class>com.example.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>errorServlet</servlet-name>
<url-pattern>/error</url-pattern>
</servlet-mapping>
<error-page>
<error-code>404</error-code>
<location>/error</location>
</error-page>
这样您就不会在URL中看到/需要/pages
更新:根据您的新问题:
更新:URL重写怎么样?GlassFish是否提供了Apache与mod_rewrite一样的灵活性?这样我就可以在它到达servlet映射阶段之前拦截它
apachehttpd的mod_rewrite
插件的JSP/Servlet等价物是
if (new File(servletContext.getRealPath(request.getRequestURI())).exists()) {
chain.doFilter(request, response);
} else {
request.getRequestDispatcher("/pages" + request.getRequestURI()).forward(request, response);
}