0

サーブレットに次のメソッドがあります。

private String process(HttpServletRequest arg0, HttpServletResponse arg1) {
    return ("a key");
} 

protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
    process(arg0, arg1);
}

web.xml に次のコードが追加されます

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>iusa.ubicacel.actions.map.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
</servlet-mapping>

inicio.jsp に以下を追加

<script type="text/javascript" src="<%=request.getContextPath()%>/MyServlet"></script>

上記の src タグで、MyServlet のプロセス メソッドから Google マップ API の URL (サーブレットのデータベースから取得します) を追加したいと思います。コメントから、私のアプローチが間違っていることを理解しています。誰か教えてくださいこのjspとサーブレットだけで正しく行うには。

4

3 に答える 3

-1

:これを行うことはお勧めしませんが、これが質問に対する直接の答えです。詳細については、コメントをご覧ください。


'プロセス メソッドから返された文字列を追加したい場合' は、次の手順を実行する必要があります。

  1. メソッドpublicを作成し、static.
  2. 次に、次のスクリプトレットを記述します<%= MyServletName.process(request, response); %>。これにより、プロセス メソッドの結果が出力されます。

最後に、次のようになります。

<script src="<%= MyServletName.process(request, response); %>"></script>

変数requestresponseは、このスコープで使用できます。

重要: この方法で達成しようとしているものは、悪い設計のように見えます。さまざまな理由で、この回答でコメントされています。@LuiggiMendoza と @DaveNewton のコメントを確認してください。

考慮すべき点を次に示します。

  1. スクリプトレットを書くのは簡単ですが、決してお勧めしません。参照: JSP ファイルで Java コードを回避する方法 .

  2. JSP からサーブレット メソッドを呼び出すのは設計上よくありません。サーブレット メソッドは、HTTP メソッドを処理するように設計されています。特定の状況を処理するようには設計されていません。

  3. あなたがやろうとしているのはアンチパターンであり、懸念を分離していません。JSP ページは、情報を構造化およびレンダリングするビューである必要があります。その情報は前処理する必要があります。

于 2013-07-16T19:53:30.353 に答える