サーブレットは初めてです。 init
( "name")を使用して、init()
メソッド内のDDでgetInitParameter
パラメーターを取得しました。 init
パラメーターにアクセスするためにdoGet()
メソッド内から多くのことを試みましたが、常にnull
を返します。
私が試した
getServletContext().getInitParametr("name")
そして
getServletConfig().getInitParametr("name")
しかし、それらはすべてnull
を返します。 doGet()
で初期化パラメーターを取得できますか?
答えは-はい、できますです。
OK、JB Nizetのコメントの他にいくつかの提案があります。
1)Web Container / Application Server の実行中に、initパラメーターを追加しましたか?
"Head First Servlets&JSPからの引用:Sun Certified Web Component Developer Exam" に合格:
サーブレットの初期化パラメータは、読み取り専用です-コンテナがサーブレットを初期化するとき。 ...
コンテナは、サーブレットを作成するときにDDを読み取り、ServletConfigの名前/値のペアを作成します。コンテナがinitパラメータを再び読み取ることはありません!パラメータがServletConfigに追加されると、サーブレットを再デプロイするまで、またはサーブレットを再デプロイしない限り、それらは再び読み取られません.
2) 2つのタイプのinitパラメーターが利用可能です。 「Head First Servlets and JSP」(エンファシスマイニング)からの別の引用:
context init parameters(_
<context-param>
_要素で定義)およびservlet init parameters(_<init-param>
_要素で定義)があります。これらは異なる要素で定義されていますが、両方ともinit parametersと呼ばれます。
Contextinitパラメーターは[any any available=現在のWebアプリの一部であるサーブレットまたはJSPです。
Servletinitパラメータはのみ利用可能 _
<init-param>
_が設定されたサーブレットです。Contextinitパラメーターは_
<web-app>
_要素内で定義されます。Servletinitパラメータは_
<servlet>
_要素内で定義されます特定のサーブレットごと。
_<?xml version="1.0" encoding="UTF-8"?>
<web-app 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_3_0.xsd"
version="3.0">
<display-name>Servlet testing app</display-name>
<!-- This is a context init parameter -->
<context-param>
<param-name>email</param-name>
<param-value>[email protected]</param-value>
</context-param>
<servlet>
<servlet-name>Info Servlet</servlet-name>
<servlet-class>com.example.InfoServlet</servlet-class>
<!-- This is a servlet init parameter -->
<init-param>
<param-name>name</param-name>
<param-value>John Doe</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Info Servlet</servlet-name>
<url-pattern>/test/ShowInfo.do</url-pattern>
</servlet-mapping>
</web-app>
_
getServletContext().getInitParameter(“email”);
getServletConfig().getInitParameter("name");
servlet init parameterを取得する別の方法は、抽象クラス GenericServlet で定義されたメソッドを使用することです。public String getInitParameter(String name);
このメソッドは便宜上提供されています。サーブレットのServletConfigオブジェクトから名前付きパラメーターの値を取得します。
また、 ServletContext と の両方にEnumeration<String> getInitParameterNames()
メソッドもありますServletConfig でall initパラメーターを取得します。
デフォルトのinit()メソッドをオーバーライドした場合は、必ずサーブレット構成パラメーターを渡して、スーパーinitメソッドも呼び出してください。あなたがそれをしないと、コードがサーブレット設定を見つけることができないためです。
サーブレットのinit()コードのコードは次のとおりです。
public void init(ServletConfig config) throws ServletException {
super.init(config);
// Rest of your code ...
}
また、サーブレットバージョン3を使用していることに気づきました。サーブレットタグの定義をサポートしているかどうかわかりません。したがって、上記のソリューションが機能する場合は、web-app属性も削除してください。