[英]Spring.io and Tiles 3 - Error 404 when .war file is deployed in Tomcat server
当我将生成的.war文件部署到独立的Tomcat服务器时,出现错误404,但是如果在war()与Tomcat服务器的IDE(IntelliJ)内部署war,则可以正常工作。
这是初始化器
public void onStartup(ServletContext servletContext)
throws ServletException {
AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
mvcContext.register(AppConfig.class);
servletContext.addListener(new ContextLoaderListener(mvcContext));
ServletRegistration.Dynamic dispatcher = servletContext.addServlet(
"dispatcher", new DispatcherServlet(mvcContext));
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
}
这是应用程序配置
**Tiles Configuration**
@Bean
public TilesConfigurer getTilesConfigurer() {
TilesConfigurer tilesConfigurer = new TilesConfigurer();
tilesConfigurer.setDefinitions(
"/WEB-INF/defs/tiles.xml");
return tilesConfigurer;
}
@Bean
public UrlBasedViewResolver getUrlBasedResolver() {
UrlBasedViewResolver urlBasedViewResolver = new UrlBasedViewResolver();
urlBasedViewResolver.setViewClass(new TilesView().getClass());
return urlBasedViewResolver;
}
/** End of Tiles Configuration */
**View Resolver:**
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/pages/**");
resolver.setSuffix(".jsp");
return resolver;
**Tiles.xml**
<definition name="hello-tiles" extends="commons">
<put-attribute name="header" value="/WEB-INF/template/header2.jsp" />
<put-attribute name="title" value="Hello Page" />
<put-attribute name="body" value="/WEB-INF/pages/hello.jsp" />
</definition>
应用程序需要知道生产计算机上的Tomcat安装路径才能解析这些路径。 您可以在xml中进行硬编码,也可以指定可以获取tomcat的安装路径的属性文件,即CATALINA_HOME
或CATALINA_BASE
。 它在您的IDE中而不是在您的生产环境中工作的原因是因为系统可以在您的IDE中理解/WEB-INF
,但是在独立系统中部署时却不会发生。
您可以将独立服务器的安装路径附加到每个路径。 例如C:/Tomcat/bin
。 因此,您将需要像
<put-attribute name="body" value="C:/Tomcat/bin/WEB-INF/pages/hello.jsp" />
如果您不喜欢绝对路径,则可以从属性文件中引用上述变量以及如何使用它们。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.