0

私はEclipseを使ってサーブレットをプログラムしています。今、サーブレットのようなことをしたいexample.jsp(ServletConfig、ServletContext、...の属性またはパラメータにアクセスする)

example.jsp を WebContent の上に置き、プロジェクト名は ProjectExample です。

web.xml で、このサーブレットを宣言する方法は次のとおりです。

<servlet>
    <servlet-name>JSP Example</servlet-name>
    <jsp-file>example.jsp</jsp-file>  
    <init-param>
      <param-name>name</param-name>
      <param-value>hqt</param-value>
    </init-param>
// I meet warning at <jsp-file>: that doesn't found this file 
//although I have change to: `/example.jsp`, `ProjectExample/example.jsp` or `/ProjectExample/example.jsp`
</servlet>

Container はこのファイルを認識しないため、使用するgetServletConfig().getInitParameter("name")と null が返されます !!!

これを修正する方法を教えてください。

ありがとう :)

@: コードに何か間違った入力があっても、それはただのタイプミスなので問題ありません。StackOverFlow でコピー/貼り付け機能が許可されなくなった理由がわかりません。

4

2 に答える 2

1

主な問題は構成ではなく、jsp ページの構成方法にあると思います。

を変更して<jsp-file>/example.jsp</jsp-file>、これを JSP に追加します。

Who am I? -> <%= getServletName() %>

私のボックスの出力は次のとおりです。

Who am I? -> jsp

これは、すべての JSP が「jsp」と呼ばれる同じサーブレット構成を共有しているためです。$CATALINE_HOME/conf/web.xml で構成されます (Tomcat を使用している場合)。私の Tomcat 7 の場合、その構成は次のようになります。

<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
于 2012-04-22T20:31:37.993 に答える
0

サーブレットにはinitメソッドが必要です。必要なパラメーターを読み取ることができます。

public class SimpleServlet extends GenericServlet {
    protected String myParam = null;

    public void init(ServletConfig servletConfig) throws ServletException{
        this.myParam = servletConfig.getInitParameter("name");
      }

    //your servlet code...
}

この例はhereから取得されました

于 2012-04-22T21:14:21.167 に答える