在上一个问题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 ......
我的目标是缩短编辑部署测试周期。
请不要建议 JRebel 或 DCEVM 或其他解决方案。直接回答......
答案 0 :(得分: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
文件名。
答案 1 :(得分:-1)
<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 /
提供相对路径