You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Maven/Spring项目的commons包中共享JSP视图?

在Maven/Spring多子项目中复用commons包的JSP视图

完全不用把共享JSP复制到每个子项目的WEB-INF目录,直接把错误页这类通用视图放进commons包,就能让所有子项目复用,具体实现步骤和注意事项如下:

1. 调整commons包的目录结构

把共享JSP放在commons包的src/main/resources/META-INF/resources/WEB-INF/jsp/路径下,比如把错误页命名为error.jsp放在这里。Maven打包时,这些文件会被打包进JAR包的META-INF/resources目录下,而Servlet容器会自动扫描这个路径加载Web资源。

2. 配置子项目的Spring MVC视图解析器

在每个子项目的Spring配置里,让视图解析器能匹配到commons包中的JSP:

  • 若用XML配置:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

Servlet容器会同时扫描子项目本地WEB-INF和commons包JAR里的META-INF/resources/WEB-INF路径,所以直接用/WEB-INF/jsp/作前缀就能匹配到commons包里的JSP。

  • 若用properties配置:
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

3. 确认commons包的依赖范围

在子项目的pom.xml里,commons包的依赖范围保持默认的compile即可,这样打包时commons包会被包含到子项目的WEB-INF/lib中,容器才能找到里面的JSP资源。

关键注意事项

  • 避免文件名冲突:如果子项目本地有和commons包同名的JSP,子项目的本地文件会优先被加载。可以给共享JSP单独建子目录(比如/WEB-INF/jsp/common/error.jsp),然后在视图解析器前缀里加上这个子目录,或者确保共享JSP命名唯一。
  • 版本要求:这种方式需要Servlet 3.0及以上版本,Spring Boot项目默认满足,传统Spring MVC项目要确认web.xml里声明的Servlet版本≥3.0。
  • 开发阶段热更新:修改commons包中的JSP后,需要重新打包commons包并更新子项目依赖,才能看到修改效果,可结合Maven的install命令和IDE自动同步优化流程。

内容的提问来源于stack exchange,提问作者Nathan S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 23:27:36