Java Spring.io和Tiles 3-在Tomcat服务器中部署.war文件时出现错误404

Java Spring.io和Tiles 3-在Tomcat服务器中部署.war文件时出现错误404,java,tomcat,apache-tiles,spring-4,tiles-3,Java,Tomcat,Apache Tiles,Spring 4,Tiles 3,当我将生成的.war文件部署到独立的Tomcat服务器时,会出现错误404,但是如果我使用Tomcat服务器在IDE(IntelliJ)中部署war,它就可以正常工作 这是初始值设定项 public void onStartup(ServletContext servletContext) throws ServletException { AnnotationConfigWebAppli

当我将生成的.war文件部署到独立的Tomcat服务器时,会出现错误404,但是如果我使用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>
**Tiles配置**
@豆子
公共tileConfigurer getTilesConfigurer(){
TileConfigure TileConfigure=新的TileConfigure();
TileConfigurer.setDefinitions(
“/WEB-INF/defs/tiles.xml”);
返回tileConfigurer;
}
@豆子
公共UrlBasedViewResolver getUrlBasedResolver(){
UrlBasedViewResolver UrlBasedViewResolver=新UrlBasedViewResolver();
urlBasedViewResolver.setViewClass(新的TileView().getClass());
返回urlBasedViewResolver;
}
/**分幅结束配置*/
**视图解析程序:**
InternalResourceViewResolver解析器=新的InternalResourceViewResolver();
resolver.setPrefix(“/WEB-INF/pages/**”);
resolver.setSuffix(“.jsp”);
返回解析器;
**Tiles.xml**

应用程序需要知道生产机器上的Tomcat安装路径才能解析路径。您可以在xml中硬编码,也可以指定可以获取tomcat安装路径的属性文件,即
CATALINA_HOME
CATALINA_BASE
。它在IDE中工作而不在生产环境中工作的原因是,系统理解IDE中的
/WEB-INF
,但在单机系统中部署它时,它不会发生这种情况

您可以将独立服务器的安装路径附加到每个路径。e、 g.
C:/Tomcat/bin
。因此,您需要像这样引用您的文件

<put-attribute name="body" value="C:/Tomcat/bin/WEB-INF/pages/hello.jsp" />

如果您不喜欢绝对路径,可以从属性文件中引用上述变量以及如何使用它们

希望能有帮助