Приложение Deployment Spring с Tomcat, контекст не соответствует

1

Я развернул приложение Spring MVC в Tomcat 6, но у меня проблема с приложением контекста uri.

Если я столкнулся с tomcat (из Intellij Idea), настройками по умолчанию, он отлично работает, все контроллеры сопоставлены (из контекста "/"). Пример: http://localhost:8080/simgranjas/getAnimals

Проблема заключается в том, что если я разворачиваю военный файл, тогда url становится localhost:8080/projectName/ (из Idea такое же поведение будет изменять контекст по умолчанию в конфигурации запуска Tomcat ("/") с именем проекта ("/projectName")), URL-адрес должен быть таким, потому что есть другие проекты, запущенные на одном сервере Tomcat.

После этого контроллеры не соответствуют этому. Они все еще начинаются с "/". Таким образом, вызов из кода будет "

http://localhost:8080/simgranjas/getAnimals

вместо

http://localhost:8080/projectName/simgranjas/getAnimals

(где это действительно так), и я получаю не найденную ошибку.

@Controller
public class WebController {

@RequestMapping(value = "/simgranjas", method = RequestMethod.GET)
public String listUsers(ModelMap model) {
    return "principal";
}

@RequestMapping("/simgranjas/getAnimals")
public String getAnimals(ModelMap model) {
    return "granjaAnimales";
}

Я попытался изменить web.xml mvc-dispatcher, но он не работает. Вот он:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns="http://java.sun.com/xml/ns/javaee"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>Simulador Granjas</display-name>

<welcome-file-list>
    <welcome-file>/</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

  • 1
    Диди вы пытаетесь удалить "/ simgranjas" из контроллера? "/ simgranjas / getAnimals" - "simgranjas / getAnimals"
  • 0
    Спасибо за комментарий! Кажется, ты прав. Я изменил @RequestMapping("/simgranjas/getAnimals") на @RequestMapping("simgranjas/getAnimals") и первая ссылка хорошо сгенерирована, но после этого все они являются simgranjas / simgranjas / getAnimals (или что-то еще). Похоже, из JSP я должен избавиться от "simgranjas".
Теги:
spring
spring-mvc
tomcat
intellij-idea

1 ответ

1
Лучший ответ

удалите "/"

в "/simgranjas" от контроллера

"/simgranjas/getAnimals" становится "simgranjas/getAnimals"

  • 0
    Путь становится относительным, вот чего я хочу. Но как насчет некоторого контроллера, такого как "simgranjas / getanimals / {animalId}". Тогда путь становится относительно «simgranjas / getanimals» вместо «simgranjas».

Ещё вопросы

Сообщество Overcoder
Наверх
Меню