Справка по отображению сервлета - возможно ли избежать ссылки на имя контекста? - PullRequest
1 голос
/ 23 апреля 2010

Я работаю над приложением Spring , используя Tomcat 6 и Spring 2.5 . Я пытаюсь получить правильное сопоставление URL. То, что я хотел бы иметь работу, является следующим:

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

Но вместо этого я должен ссылаться на имя контекста в своем URL, чтобы разрешить сопоставление:

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

Как я могу избежать требования ссылки на имя контекста в моем URL без использования механизма перезаписи / прокси, например, Apache

Вот определение и отображение сервлета из моего web.xml:

<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...
    }
}

Спасибо!

Ответы [ 2 ]

4 голосов
/ 23 апреля 2010

Это будет зависеть от вашего контейнера сервлетов, для Tomcat - вам в значительной степени придется развернуть ваше веб-приложение как веб-приложение ROOT, то есть в каталоге $ CATALINA_HOME / webapps / ROOT /

Подробнее здесь

1 голос
/ 23 апреля 2010

Просто переименуйте ваш war-файл в ROOT.war, затем приложение будет запущено в корневом контексте (т.е. с пустым контекстным именем)

...