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

标签 java tomcat apache-tiles spring-4 tiles-3

当我将生成的 .war 文件部署到独立的 Tomcat 服务器时出现错误 404,但是如果我在我的 IDE(IntelliJ) 中使用 tomcat 服务器部署 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_HOMECATALINA_BASE。它在您的 IDE 中工作而不在您的产品中工作的原因是因为系统理解您的 IDE 中的 /WEB-INF 但当您将它部署在独立系统中时它不会发生。

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

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

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

希望对您有所帮助。

关于java - Spring.io 和 Tiles 3 - 在 Tomcat 服务器中部署 .war 文件时出现错误 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25359480/

相关文章:

java - 知道 Apache Spark 中 Java ForkJoinPool 中哪个线程进入哪个处理器?

JavaFX webview 不保存 cookie

tomcat - 使用tomcat jdbc pool StatementCache拦截器时出错

java - 如何编辑 Tomcat 中的默认目录列表?

java - 对 apache 磁贴属性进行逻辑处理

spring-mvc - Spring-Boot + Spring-MVC + Thymeleaf + Apache Tiles

Java 泛型和注解 : Type-Safe

java - 需要帮助来理解和实现基本的 Web 应用程序安全性

java - URL 路径参数编码

java - Spring 4 + Tiles (3 || 2.2.2) - 有什么方法可以访问 View 上下文中的 bean?