【问题标题】:I want to use development version of JSP files in Spring project. Is it possible?我想在 Spring 项目中使用 JSP 文件的开发版本。是否可以?
【发布时间】:2013-03-18 13:16:10
【问题描述】:

在上一个问题Forcing JBoss AS 7 to use static files from source (development) directory in Spring project 中,我要求提供 JS/CSS 文件,经过 4 小时的文档阅读和实验,我自己解决了问题。

但我不熟悉 Spring/Servlet 的内部机制来强制 Spring 使用本地文件系统路径(开发文件)中的 JSP 文件。我试试:

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="file:/home/user/devel/app/src/main/webapp/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>

但是当我访问应用程序页面时出现错误:

HTTP Status 404 - /app/file:/home/user/devel/app/src/main/webapp/WEB-INF/jsp/index.jsp

我认为它来自ServletContext.getRealPath...

我的目标是缩短编辑-部署-测试周期。

请不要建议 JRebelDCEVM 或其他解决方案。直接回答...

【问题讨论】:

  • 不应该是file:///吗?
  • 我尝试了同样的错误。

标签: java spring jsp servlets


【解决方案1】:

切换到 Tomcat 7(从 Jboss AS 7)后,我配置上下文 /opt/apache-tomcat-7.0.40/conf/Catalina/localhost/CTXNAME.xml

<Context docBase="/home/user/devel/proj-dev/src/main/webapp"
         reloadable="true">
    <Resources className="org.apache.naming.resources.VirtualDirContext"
               extraResourcePaths="/WEB-INF/classes=/home/user/devel/proj-dev/target/classes,/WEB-INF/lib=/home/user/devel/proj-dev/target/proj/WEB-INF/lib"/>
    <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
            virtualClasspath="/home/user/devel/proj-dev/target/classes;/home/user/devel/proj-dev/target/proj/WEB-INF/lib"/>
    <JarScanner scanAllDirectories="true"/>
</Context>

根据:

现在 JS/CSS/JSP 文件在浏览器中由F5 更新。为了使用新的.class,调用mvn compile

引导调用mvn package。上下文名称来自.xml 文件名。

【讨论】:

    【解决方案2】:
    <bean id="viewResolver"
              class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
                  <property name="prefix"> 
                        <value>/WEB-INF/jsp/</value>
                  </property>
                  <property name="suffix">
                     <value>.jsp</value>
                  </property>
    </bean>
    

    在前缀中,您必须只提供以 /WEB-INF/ 开头的相对路径

    【讨论】:

    • 我知道。这很遗憾,因为我将 war-file 部署到 JBoss,因此它使用存档中的 .jsp-files 但我希望它使用来自开发层次结构的本地文件系统。
    猜你喜欢
    • 2019-11-26
    • 2022-01-21
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    相关资源
    最近更新 更多