1

假设您编写了一个带有一些上下文参数的部署描述符,并且您希望其中一个成为对象,不幸的是我读到您只能将字符串值添加到标签中。

有没有办法做到这一点?当涉及到数据库时,我理解了一个示例,因为您可以输入查找名称。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   ....>
 <context-param>
   <param-name>foo</param-name>
   <param-value>new foo()</param-value>
 <servlet>
  <servlet-name>BeerParamTests</servlet-name>
  <servlet-class>TestInitParams</servlet-class>
  <init-param>
   <param-name>adminEmail</param-name>
   <param-value> likewecare@wikewdfs</param-value>
  </init-param>
 </servlet>
<servlet-mapping>
 <servlet-name>BeerParamTests</servlet-name>
 <url-pattern>/Tester.do</url-pattern>
</servlet-mapping>

4

2 回答 2

1
<context-param>
   <param-name>foo</param-name>
   <param-value>new foo()</param-value>
</context-param>

这将只存储new foo()String.

param-name并且param-value基于键值对。

检索String 存储为值的键不使用这种值,因为它只会返回String

String foo=getServletContext().getInitParameter("foo");//result : new foo()

假设您编写了一个带有一些上下文参数的部署描述符,并且您希望其中一个成为对象

不可以。您不能存储Object到部署描述符String。只允许使用参数。

于 2014-07-14T12:28:41.317 回答
1

<context-param> <param-name>foo</param-name> <param-value>com.edu.Foo</param-value> </context-param>

在你的java代码中,试试下面

Class.forName(getServletContext().getInitParameter("foo")).newInstance();

但是您只会获得没有为属性分配任何值的空对象。它对你有用吗?

于 2014-07-14T12:43:02.917 回答