如何读取非 servlet java 文件中的上下文参数/web.xml值?
我有一个常规的java文件,我用它来更新和查询mysql数据库,但我需要在那个文件中采用可配置的选项(如主机名,密码等),并将其放在web.xml文件中(或者如果这是一个选项,则可能是另一个文件,但理想情况下是在web.xml)。
但是我不知道如何从常规的非servlet java文件中访问web.xml值。
或者我需要读取xml(像任何其他xml文件一样...还是有捷径可走...)
我有一个常规的java文件,我用它来更新和查询mysql数据库,但我需要在那个文件中采用可配置的选项(如主机名,密码等),并将其放在web.xml文件中(或者如果这是一个选项,则可能是另一个文件,但理想情况下是在web.xml)。
但是我不知道如何从常规的非servlet java文件中访问web.xml值。
或者我需要读取xml(像任何其他xml文件一样...还是有捷径可走...)
您需要将所需的参数放在 web.xml 文件的 env 条目条目中:
<env-entry>
<env-entry-name>dbhost</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>localhost</env-entry-value>
</env-entry>
然后通过 jndi 上下文访问它们
import javax.naming.Context;
import javax.naming.InitialContext;
...
// Get the base naming context
Context env = (Context)new InitialContext().lookup("java:comp/env");
// Get a single value
String dbhost = (String)env.lookup("dbhost");
您可以在 web.xml中使用上下文参数,并使用 javax.servlet.ServletContextListener 来填充一些静态字段。
在你普通的java类中,你读这个静态字段。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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_2_5.xsd">
...
<context-param>
<description>Prameter</description>
<param-name>myParam</param-name>
<param-value>123456790</param-value>
</context-param>
...
</web-app>
您可以使用以下命令访问此上下文参数ServletContext.getInitParameter