gpt4 book ai didi

java - Spring MVC 在 WAR 和 JAR 文件中使用 jsp 文件

转载 作者:行者123 更新时间:2023-12-02 09:04:38 24 4
gpt4 key购买 nike

我正在开发一个 Web 应用程序,这意味着可扩展,jar 应该包含扩展或模块所需的所有内容,包括模型、 View 和 Controller 。一个 jar 用于单个扩展。然而,我一直坚持在 JAR 中引用 JSP,尽管经过一天的尝试和谷歌搜索后,我不再确定这是否可能。

环境和库(如果相关):STS 4、Tomcat 9、Java 8、Spring 5.2.2.RELEASE、servlet-api 4.0.1

框架的配置是基于XML的,扩展是基于注释的。

我有什么:

mvc-dispatcher-servlet.xml(进入 WAR)

<mvc:annotation-driven />

<!-- it instantiates BarController from the JAR that meant to use bar.jsp from the JAR -->
<context:component-scan base-package="acme.jar.with.jsps.controllers.are.in.this.pkg" />

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

<!-- it instantiates FooController that uses foo.jsp -->
<bean class="acme.this.controller.is.not.in.jar.FooController" />

bar.jsp 在 jar 中

pom.xml

<build>
<resources>
<resource>
<directory>src/main/webapp</directory>
</resource>
...

和 bar.jsp

$ find . -name "*.jsp"
./target/classes/WEB-INF/views/jsp/bar.jsp
./src/main/webapp/WEB-INF/views/jsp/bar.jsp

WAR 中的 foo.jsp 一切都很好

DEBUG|org.springframework.web.servlet.view.JstlView|View name 'FooController', model {...
DEBUG|org.springframework.web.servlet.view.JstlView|Forwarding to [/WEB-INF/views/jsp/foo.jsp]
DEBUG|org.springframework.web.servlet.DispatcherServlet|Completed 200 OK

无法找到 JAR 中的 bar.jsp

DEBUG|org.springframework.web.servlet.view.JstlView|View name 'BarController', model {...
DEBUG|org.springframework.web.servlet.view.JstlView|Forwarding to [/WEB-INF/views/jsp/bar.jsp]
DEBUG|org.springframework.web.servlet.DispatcherServlet|Completed 404 NOT_FOUND

我的问题

  • JAR 中的 JSP 是否可以被引用?我尝试对 InternalResourceViewResolver 使用许多不同的前缀,但它们都无法从 JAR 中获取 JSP。
  • 是否有一个 View 解析器能够从 JAR 中提取 JSP?如果是这样,那么如何配置多个 View 解析器?
  • 我做错了什么吗?

最佳答案

好吧,“JAR 中的 JSP”的整个故事又长又充满痛苦。

简而言之:即使你能够让它工作 - 总会有一些损坏的部件。

这是更多-更少的工作示例:https://github.com/hengyunabc/spring-boot-fat-jar-jsp-sample

这是带有一些详细信息的类似问题:
Is it possible with Spring Boot to serve up JSPs with a JAR packaging?

最好的情况是使用 WAR 打包而不是 JAR。

关于java - Spring MVC 在 WAR 和 JAR 文件中使用 jsp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59913175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com