将参数传递给Tomcat Servlet

时间:2013-03-29 22:10:55

标签: tomcat web-config tomcat7 config

我正在使用tomcat 7构建一个Web servlet,作为其工作的一部分,它将访问RESTful API。目前,该URL是作为我的servlet中的字符串硬编码的,但我想将其移出,这样一旦servlet完成,我就可以传入servlet应该连接到的URL而不是硬编码。最好的方法是什么?我已经读过我应该在META-INF文件夹中添加一个context.xml文件,但如果我想更改API的URL,这是否意味着我需要重新打包战争?

1 个答案:

答案 0 :(得分:0)

使用init-param将servlet的配置扩展到标准web.xml文件:

<servlet>
    <servlet-name>My servlet</servlet-name>
    <servlet-class>com.foo.bar.MyServlet</servlet-class>
    <init-param> 
        <description>Restful API URL</description> 
        <param-name>restfulApiUrl</param-name> 
        <param-value>http://www.foo.com/api/</param-value> 
    </init-param> 
</servlet>

并从您的servlet初始化方法访问它:

private String restulApiUrl;

@Override
public void init(ServletConfig config) throws ServletException {
    restulApiUrl = config.getInitParameter("restfulApiUrl");
}

除非你将应用程序部署为爆炸战争,否则这确实会迫使你在更改值时重新打包战争。

您当然可以想象其他解决方案:使用系统属性(在启动Tomcat时传递),将其存储在启动时读取的文件中,将其存储在数据库中等等。