Java 如何从jar文件加载SpringMVC视图模板
我有一个相对较大的web项目,为了简化开发过程,我决定将该项目分成几个模块(包含模型、控制器和视图的jar项目)。 我注意到Servlet3.0支持从META-INF/resources目录中的jar文件自动公开资源 如何从jar的META-INF/resources目录强制执行SpringMVC加载视图模板 我知道静态资源可以通过配置加载Java 如何从jar文件加载SpringMVC视图模板,java,spring,templates,spring-mvc,servlet-3.0,Java,Spring,Templates,Spring Mvc,Servlet 3.0,我有一个相对较大的web项目,为了简化开发过程,我决定将该项目分成几个模块(包含模型、控制器和视图的jar项目)。 我注意到Servlet3.0支持从META-INF/resources目录中的jar文件自动公开资源 如何从jar的META-INF/resources目录强制执行SpringMVC加载视图模板 我知道静态资源可以通过配置加载 <mvc:resources mapping="/resources/**" location="classpath:/META-INF/resour
<mvc:resources mapping="/resources/**" location="classpath:/META-INF/resources" />
我的主模块中的视图解析器如下所示
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />
似乎没有任何地方可以从jar指定视图路径
我希望从主模块的/WEB-INF/jsp加载相同的视图,从jar文件的META-INF/resources加载相同的视图,那么如何实现这一点呢?理论上,前缀“/”和后缀“.jsp”就足够了。默认情况下,可以访问
/META-INF/Resources
目录中的资源(除非覆盖默认servlet)。但是,这些资源在默认情况下是可用的(如Servlet 3.0规范第10.5节中所指定),我不确定您是否希望能够直接访问JSP(最好将这些资源放在/WEB-INF
目录中的某个位置)
链接:
-理论上,前缀“/”和后缀“.jsp”就足够了。默认情况下,
/META-INF/Resources
目录中的资源是可访问的(除非覆盖默认servlet)。但是,默认情况下这些资源是可用的(如servlet 3.0规范第10.5节所述)我不确定您是否希望能够直接访问JSP(最好还是将它们放在/WEB-INF
目录中的某个地方)
链接:
-谢谢您的回复。我想知道,如果我使用META-INF/resources/WEB-INF/jsp/a.jsp目录将模板放入jar文件,就像我以解包形式将模板放入WEB根目录/WEB-INF/jsp/a.jsp中一样?是的,它在tomcat 7.0.28下工作,但在jetty-8.1.12.v20130726下没有成功。它在jetty:C下抛出一个NullException原因:java.net.URLEncoder.encode(URLEncoder.java:205)处的java.net.URLEncoder.encode(URLEncoder.java:171)处的java.lang.NullPointerException处的java.net.URLEncoder.encode(URLEncoder.java:205)处的org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:474)处的javax.servlet.http.HttpServlet.service(JspServlet.java:378)(HttpServlet.java:848)位于org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)从理论上讲,这可能是可行的,但正如您已经发现的,这可能取决于所使用的Servlet容器以及它们如何解释规范的这一部分。感谢您的响应。我想知道,如果我使用META-INF/resources/WEB-INF/jsp/a.jsp目录将模板放入jar文件中,就像我将模板放入WEB root/WEB-INF/jsp/a.jsp目录中一样n一个解包表单?是的,它在tomcat 7.0.28下工作,但在jetty-8.1.12.v20130726下没有成功。它在jetty下抛出一个NullException:由java.lang.NullPointerException在java.net.URLEncoder.encode(URLEncoder.java:205)在java.net.URLEncoder.encode(URLEncoder.java:171)在org.apache.jasper.servlet.JspServlet.serviceJspFile引起(JspServlet.java:474)在org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)在javax.servlet.http.HttpServlet.service(HttpServlet.java:848)在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)上从理论上讲,这可能是可行的,但正如您已经发现的,这可能取决于所使用的Servlet容器以及它们如何解释规范的这一部分。