1

我正在使用 Tomcat 6 和 Spring 2.5开发一个 Spring 应用程序。我试图让我的 URL 映射正确。我想要的工作如下:

http://localhost:8080/idptest -> doesn't work

但是,我必须在我的 URL 中引用上下文名称才能解析映射:

http://localhost:8080/<context_name>/idptest -> works

如何避免在不使用重写/代理引擎(例如 Apache)的情况下在我的 URL 中引用上下文名称的要求?

这是我的 web.xml 中的 servlet 定义和映射:

<servlet>
    <servlet-name>idptest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/conf/idptest.xml</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup> 
</servlet>

<servlet-mapping>
    <servlet-name>idptest</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

这是我的控制器的轮廓(显示请求映射的注释):

@Controller
@RequestMapping("/idptest")
public class MyController  {

    @RequestMapping(method=RequestMethod.GET)
    public String setupForm(Model model){
            MyObject someObject = new MyObject();
        model.addAttribute("someObject", someObject);
        return "myform";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String processSubmit(@ModelAttribute("someObject") MyObject someObject) throws Exception {
        // POST logic...
    }
}

谢谢!

4

2 回答 2

4

这将取决于您的 servlet 容器,对于 Tomcat - 您几乎必须将您的 webapp 部署为 ROOT webapp,即在 $CATALINA_HOME/webapps/ROOT/ 下

更多信息在这里

于 2010-04-23T18:11:41.987 回答
1

只需将您的 war 文件重命名为 ROOT.war,然后应用程序在根上下文中运行(即,上下文名称为空)

于 2010-04-23T18:11:44.347 回答