我正在使用Tomcat's Jasper HowTo为我的servlet设置init参数。但我还没想出如何在web.xml文件中全局设置这些参数。如何避免在每个servlet描述中复制我的init-params?
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="true">
<servlet>
<servlet-name>foo</servlet-name>
<jsp-file>/WEB-INF/foo/foo.jsp</jsp-file>
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.7</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>bar</servlet-name>
<jsp-file>/WEB-INF/bar/bar.jsp</jsp-file>
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.7</param-value>
</init-param>
</servlet>
</web-app>
答案 0 :(得分:4)
我相信答案在链接文档中:
使用全局
中的init参数配置实现Jasper的servlet$CATALINA_BASE/conf/web.xml
所以打开这个文件并在Jasper servlet(<servlet-name>jsp</servlet-name>
)中添加相应的init-params。
这将设置整个服务器的参数。我没有尝试为一个应用程序设置参数; 可能可以重复从全局web.xml到您自己的jsp servlet 和映射的声明,并添加init-params。 (但是,对于您正在设置的参数compilerTargetVM
,将全局应用于整个服务器确实有意义。)
我没有Tomcat可用,因此我现在使用Tomcat版本7.0.47进行测试:您可以在应用程序的web.xml中添加<servlet>jsp</servlet>
(从全局复制它) conf / web.xml并修改你想要的东西) DOES 工作。即此应用程序中的所有JSP都使用所需的init-params运行,而其他应用程序不受影响。
答案 1 :(得分:1)
正如Nikos所说,您可以通过编辑 $ {TOMCAT_HOME} / conf 目录中的 web.xml 来设置JspServlet实例的参数。因此,在服务器启动期间将在org.apache.jasper.servlet.JspServlet
实例中设置此属性。在您的情况下,要设置参数compilerTargetVM
,您可以将JspServlet
声明编辑为
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<!-- Added the user parameter -->
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.7</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
希望这有帮助