servlet中init参数的用途是什么?我知道名字本身意味着初始化一些东西,但我的问题是什么?
在servlet web.xml中使用init参数的任何其他优点?
我尝试在网上搜索,但找不到它的确切用法。
答案 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);
}
}