如何在Tomcat的web.xml中为所有servlet全局设置Jasper init参数?

时间:2013-12-04 08:39:41

标签: java-ee tomcat servlets web.xml

我正在使用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>

2 个答案:

答案 0 :(得分:4)

我相信答案在链接文档中:

  

使用全局$CATALINA_BASE/conf/web.xml

中的init参数配置实现Jasper的servlet

所以打开这个文件并在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>

希望这有帮助