Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从jar文件加载SpringMVC视图模板_Java_Spring_Templates_Spring Mvc_Servlet 3.0 - Fatal编程技术网

Java 如何从jar文件加载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

我有一个相对较大的web项目,为了简化开发过程,我决定将该项目分成几个模块(包含模型、控制器和视图的jar项目)。 我注意到Servlet3.0支持从META-INF/resources目录中的jar文件自动公开资源

如何从jar的META-INF/resources目录强制执行SpringMVC加载视图模板

我知道静态资源可以通过配置加载

<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容器以及它们如何解释规范的这一部分。