【发布时间】:2010-10-14 16:52:31
【问题描述】:
首先,如果这是重复的,我很抱歉。我做了很多搜索,但找不到太多,我怀疑我没有使用正确的术语...
我正在使用 Spring MVC 构建一个站点并使用注释驱动的配置。我想要做的是最后没有任何扩展名的网址(.html、.do 等)。所以它们看起来像http://www.mysite.com/account/create,我知道这是传统上使用 Apache 上的mod_rewrite 或使用不带扩展名的文件来完成的。似乎它可以在不使用重写引擎的情况下完成(我知道 urlrewritefilter 项目),因为 Spring 支持从请求字符串中提取参数(参见the documentation 的第 15.3.2.1 节)并且宠物商店示例没有'似乎在其网址的末尾没有扩展名。
但是,似乎每当我尝试将所有请求转发到调度程序 servlet 时(我在思考如何否定对 *.htm 之类的需求),我遇到了麻烦......我能够得到它工作(使用 XML 配置,我最近切换到注释配置)只为所有页面使用标准的“*.htm”。
我的控制器代码看起来像
@Controller
@RequestMapping("/home")
public class HomeController {
...
@RequestMapping(method = RequestMethod.GET)
public ModelAndView get() {
...
}
我的 web.xml 看起来像
<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatch</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我在这里遗漏了什么吗?在不使用重写引擎的情况下这可能吗?
我应该注意,上面的配置不起作用。它总是返回一个404 错误...
【问题讨论】: