如何在 spring 中传递未知的 uri
How to pass unknown uri's in spring
我们用于 spring 网络应用 angularJS 和 Jade。这些文件位于静态资源文件夹中。当用户想要访问页面时,Jade 呈现文件和 returns html 页面。在加载页面时需要其他资源,如 css 和 js 文件。我遇到了问题,Spring 试图映射这些资源请求,当然找不到任何映射。
所以我尝试安装一个过滤器,它应该将这些请求直接传递到资源文件夹,而不需要任何请求映射或处理或其他东西。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
String uri = ((HttpServletRequest) request).getRequestURI();
System.out.println("Filtering: " + uri);
try{
request.getRequestDispatcher(uri).forward(request, response);
}catch(Exception e)
{
e.printStackTrace();
}
}
似乎过滤器递归调用,因此应用程序遇到堆栈溢出(至少我可以看到无限循环中的许多异常总是从 doFilter() 开始)。
那么如何将具有未知映射的请求直接传递到资源文件夹?
您不必使用过滤器,您可以在 Spring MVC servlet XML 配置中为静态文件配置映射,在这种情况下,您对 CSS 和 JS 会很好地工作。典型的是将静态文件放在一个文件夹下,并映射到该文件夹,例如
1) 文件夹结构
| - resources
| | - css
| | ` your CSS files...
| | - js
| ` your JS files...
| - WEB-INF
2) 映射请求到静态资源的位置
<resources mapping="/resources/**" location="/resources/" />
或
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources");
}
如果您正在使用 java 配置
3) 从 JSP 访问静态资源,如
<link href="<c:url value="/resources/css/[your file].css"/>" rel="stylesheet" type="text/css" />
我们用于 spring 网络应用 angularJS 和 Jade。这些文件位于静态资源文件夹中。当用户想要访问页面时,Jade 呈现文件和 returns html 页面。在加载页面时需要其他资源,如 css 和 js 文件。我遇到了问题,Spring 试图映射这些资源请求,当然找不到任何映射。
所以我尝试安装一个过滤器,它应该将这些请求直接传递到资源文件夹,而不需要任何请求映射或处理或其他东西。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
String uri = ((HttpServletRequest) request).getRequestURI();
System.out.println("Filtering: " + uri);
try{
request.getRequestDispatcher(uri).forward(request, response);
}catch(Exception e)
{
e.printStackTrace();
}
}
似乎过滤器递归调用,因此应用程序遇到堆栈溢出(至少我可以看到无限循环中的许多异常总是从 doFilter() 开始)。
那么如何将具有未知映射的请求直接传递到资源文件夹?
您不必使用过滤器,您可以在 Spring MVC servlet XML 配置中为静态文件配置映射,在这种情况下,您对 CSS 和 JS 会很好地工作。典型的是将静态文件放在一个文件夹下,并映射到该文件夹,例如
1) 文件夹结构
| - resources
| | - css
| | ` your CSS files...
| | - js
| ` your JS files...
| - WEB-INF
2) 映射请求到静态资源的位置
<resources mapping="/resources/**" location="/resources/" />
或
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/resources");
}
如果您正在使用 java 配置
3) 从 JSP 访问静态资源,如
<link href="<c:url value="/resources/css/[your file].css"/>" rel="stylesheet" type="text/css" />