2014-09-05 79 views
1

我已经将Spring MVC应用程序部署到Tomcat 6中,但是我的应用程序上下文uri有问题。部署Tomcat的上下文应用程序,上下文不匹配

如果我运行到Tomcat(从IntelliJ IDEA的),默认的设置,它的伟大工程,所有控制器(根据上下文“/”)相匹配。例如:http://localhost:8080/simgranjas/getAnimals

问题是如果我部署war文件,那么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的调度员,但它不工作,在那里,它是:

<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” – venergiac 2014-09-05 10:32:01

+0

感谢您的评论!看起来你是对的。我将'@RequestMapping(“/ simgranjas/getAnimals”)'改为'@RequestMapping(“simgranjas/getAnimals”)'并且第一个链接已经很好地生成了,但之后所有的都是simgranjas/simgranjas/getAnimals(或其他)。看来从jsp的我必须摆脱“simgranjas”。 – detoro84 2014-09-05 11:02:37

回答

1

从控制器删除"/simgranjas""/"

"/simgranjas/getAnimals"成为"simgranjas/getAnimals"

+0

路径变得相对,这就是我想要的。但是像“simgranjas/getanimals/{animalId}”这样的控制器呢?然后,路径相对于“simgranjas/getanimals”而不是“simgranjas”。 – detoro84 2014-09-06 14:07:27

相关问题