在java servlet中使用初始化参数

时间:2014-12-03 12:03:49

标签: java servlets

servlet中init参数的用途是什么?我知道名字本身意味着初始化一些东西,但我的问题是什么?

在servlet web.xml中使用init参数的任何其他优点?

我尝试在网上搜索,但找不到它的确切用法。

2 个答案:

答案 0 :(得分:2)

我有一个servlet过滤器,当给出一个特殊的URL参数时,它必须绕过正常的授权流程。不是在java中对该参数进行硬编码,而是在web.xml中声明它具有能够不时更改它的优点。

通常,所有设置都适用,最适合声明:超时,最大可接受图像大小,缓冲区大小。 "几乎是永恒的"常数。

在一种情况下,servlet可以保持完全通用,但密钥名称是业务应用程序(=人类客户端)特定:

x.y.general.servlets.MyGenericServlet -> neutral library code
x.y.clients.abc                       -> ABC specific code

的web.xml:

<servlet>
    <servlet-name>My Servlet</servlet-name>
    <servlet-class>x.y.general.servlets.MyGenericServlet</servlet-class>
    <init-param> 
        <description>For ABC</description> 
        <param-name>keyName</param-name> 
        <param-value>ABC_ID</param-value> 
    </init-param> 
</servlet>

答案 1 :(得分:1)

用法是在servlet初始化时为servlet提供固定的参数值 的web.xml

<servlet>
    <servlet-name>MySMSServlet</servlet-name>
    <description>Send a sms</description>
    <servlet-class>com.x.y.SendSMS</servlet-class>
    <init-param>
        <param-name>cellnumber</param-name>
        <param-value>5555-0000</param-value>
        <description>SMS target</description>
    </init-param>
    <init-param>
        <param-name>text</param-name>
        <param-value>server start</param-value>
        <description>SMS text</description>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

Servlet类

import javax.servlet.http.HttpServlet;

public class SendSMS extends HttpServlet {
    private static final long serialVersionUID = 100L;

    @Override
    public void init() {
        String cellNumber = getServletConfig().getInitParameter("cellnumber");
        String text = getServletConfig().getInitParameter("text");

        new SMSProvider().sendSMS(cellNumber, text);
    }
}