【发布时间】:2012-07-31 22:26:34
【问题描述】:
我想将 spring mvc 控制器映射到根 (/**) 路径(而不是诸如“/something”之类的子文件夹),同时使用mvc:resources 进行例外处理(打开另一种方法)。
这应该是该框架的基础知识,但显然是一个非常复杂的问题。
我的app-servlet.xml 有这些明显的映射异常:
<mvc:resources mapping="/favicon.ico" location="/favicon.ico" />
<mvc:resources mapping="/robots.txt" location="/robots.txt" />
我有这个控制器:
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/**")
public class MainController {
@RequestMapping(method = RequestMethod.GET)
public String service(final HttpServletRequest request) {
final String servlet_path = request.getServletPath();
System.out.println(String.format("%s %s", new Date().toString(), servlet_path));
return "test";
}
}
现在当我点击“/”或“/test”或“/test/page”时,我会得到如下输出:
Fri Aug 03 00:22:12 IDT 2012 /
Fri Aug 03 00:22:13 IDT 2012 /favicon.ico
.. 看到了吗? service() 被调用为 /favicon.ico,即使它被明确排除在外!
现在我猜想@Controller 对 XML 有一些“优先级”,但是,我该如何使排除工作?
一个简单的要求 - 将网站放在“/”上。
P.S This answer 回答了一个非常相似的问题。
另一个注意事项:这个问题与tomcat上下文无关。
【问题讨论】:
标签: java servlets spring-mvc mapping