2011-01-31 2 views
0


サーブレットの非ライフサイクルメソッドをブラウザから直接呼び出すことができるかどうかは疑問でした。
例えば、単にサンプルコードとして、私は何かのようにしている場合 -ブラウザからのサーブレット非ライフサイクルメソッド呼び出し

public CheckServlet extends HttpServlet { 
    public void foo(HttpServletRequest req, HttpServletResponse res) { 
     // do something 
    } 
} 

のweb.xml -

<servlet> 
    <display-name>CheckServlet</display-name> 
    <servlet-name>CheckServlet</servlet-name> 
    <servlet-class>defpkg.CheckServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>CheckServlet</servlet-name> 
    <url-pattern>/CheckServlet</url-pattern> 
</servlet-mapping> 

ブラウザのURL - 今、私がしなければならない場合、

http://localhost:8080/MyApp/CheckServlet 

ブラウザからfoo()に電話をかけることは可能でしょうか?はいの場合はどうですか?

親切にしてください。

答えて

1

これは不可能です。それが可能だった場合、あなたのwebappのユーザーは任意のメソッドを呼び出すことができるように大きなセキュリティホールになるでしょう!

しかし、あなたのサーブレットはライフサイクルメソッドを望むかもしれません。

+0

ありがとうございました。わかった。 –

0

サーブレット仕様(2.5)は、次のものをサポートしています。

  • のdoGet
  • のdoPost
  • doPutメソッド
  • doDelete
  • doHead
  • doOptions
  • doTrace
0

ありませんが、あなたはどちらかGETを通じていくつかのパラメータを渡すことができますまたはPOST、最初のeは実行するアクションの名前、もう1つは渡すパラメータです。サーブレット側では、異なるアクションに異なるアクションをマップし、単にリクエストパラメータを渡します。

+0

hhmm ..私はそれを試してみるかもしれない。ありがとう。 –

0

はいweb-appがサーブレット2.5の場合にブラウザが呼び出すことができます。新しいサーブレット仕様はカスタムメソッドをサポートしています。サーブレットがdoFoo()メソッドを持つことができ、ブラウザは通常のGET、 POST Httpメソッド。

関連する問題