java - 带有来自其他 Maven 模块的部分 JSP 文件的 Spring Boot 应用程序

标签 java spring jsp spring-mvc spring-boot

假设我们有一个使用 JSP 模板的基于 Spring Boot 的 Web 应用程序。甚至可以像下面的例子一样简单(来自官方 Spring Projects repository )

项目结构:

|-src/main/java/
|    |-sample.tomcat.jsp
|        |-SampleTomcatJspApplication.java
|        |-WelcomeController.java
|-src/main/resources/
|    |-application.properties
|-src/test/java/
|    |-...
|-src/main/webapp/
|    |-WEB-INF
|        |-jsp
|            |-welcome.jsp
|-pom.xml

属性文件包含 View 前缀 /WEB-INF/jsp/ 和后缀 .jsp 并且在请求 / 时我们看到正确呈现的内容欢迎.jsp

WelcomeController.java

application.properties

变化

现在让我们进行以下更改

  1. WelcomeController.java 复制为 WelcomeController2.java 并更改位请求映射、模型属性和返回的 View 名称,例如:

    @RequestMapping("/2")
    public String welcome2(Map<String, Object> model) {
        model.put("message", "Hi from Welcome2");
        return "welcome2";
    }
    
  2. welcome.jsp 复制为 welcome2.jsp 以便 src/main/webapp 如下所示:

    |-src/main/java/
    |    |-sample.tomcat.jsp
    |        |-SampleTomcatJspApplication.java
    |        |-WelcomeController.java
    |        |-WelcomeController2.java
    ...
    |-src/main/webapp/
    |    |-WEB-INF
    |        |-jsp
    |            |-welcome.jsp
    |            |-welcome2.jsp
    

然后在请求 /2 时,我们可以看到正确呈现的 welcome2.jsp 内容。

问题

如何将此类项目拆分为两个 maven 项目,以便 WelcomeController2.javawelcome2.jsp 都可以移动到其他项目(maven 依赖项)并在请求 /2 URL 时仍能成功解析?

请注意,在 Spring Boot 中,web-fragment.xml(可以放在依赖项的 META-INF 目录中)将被忽略。

最佳答案

不幸的是,我不知道有什么简单的方法可以做到这一点,但我使用的一种方法是创建一个 Maven 构件,就像主项目的正常构件一样,在您的情况下可能是一个 WAR 构件。该项目需要依赖于您的第二个项目。那么您的第二个项目将由两个部分组成:

  1. 包含已编译类文件的标准 Maven JAR 工件。
  2. A Maven assembly ZIP 由 JSP 文件组成,这些文件也需要包含在 WAR 存档中。这将在 package 阶段从第二个项目生成,但需要使用 zip 分类器作为对主项目的单独依赖项。

构建第一个项目时,您需要 unpack the assembly dependency作为 WAR 归档文件打包过程的一部分。如果您希望它在 IDE 中工作,您可能需要在相当早的阶段将其解压缩,例如 process-resourcesgenerate-sources

关于java - 带有来自其他 Maven 模块的部分 JSP 文件的 Spring Boot 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082674/

相关文章:

java - Spring Security OAuth - 访问此资源需要完全身份验证

java - 在 Web 项目中读取 .csv 文件

jsp - 基于 tomcat 表单的身份验证的 HTTP 状态 408 错误

java - 尝试检索 session 变量中的数组列表

java - 如何向 URLStreamHandler 提供上下文?

java - 文本数据检索/搜索

java - 使用 JWT/antMatchers 阻止访问的 Spring 安全配置

java - 如何使用@ComponentScan 注解扫描多个路径?

java - OpenAM13.0.0--Tomcat自动关机

java - Apache http 组件服务器线路日志