2016-09-27 21 views
0

jspページとサーブレットを使用してプロジェクトを行っています。jspページからサーブレットを呼び出す方法

私のサーブレットでは、要求を行っているJSPページを特定する必要があります。

どうすればいいですか?

+0

どのような要望ですか?ブラウザからの外部リクエストまたは内部インクルード/ディスパッチ? – Thilo

+0

jspページでは、Webページで投稿を行っているフォームがあります@Thilo – untruste

+2

リクエストでreferer属性を読むことはできますが、それは安全ではありません。他のオプションについては、この質問の最初の解を読んでください:http:// stackoverflow。com/questions/10791109/request-getheaderreferer-back-button-reload-the-page –

答えて

1

私は解決策を見つけました。

送信ボタンに名前を設定しました。

<input type="submit" name="button" value="button1"> 

、その後、サーブレットで、私は、私は、要求が

2

からの要求は考えから来ているからフォームを識別するための最も簡単な方法を来たから知っていることを行う

String r = request.getParameter("button"); 

に確認してくださいフォーム識別子を含む隠しフィールドを追加すること。しかし、これは非常に珍しい要件です。同じURLに投稿すると、通常は投稿の発信元が問題ではないということです。問題がある場合(その理由は?)、差異は投稿データ(したがって非表示フィールドの提案)にあるか、別のURLに投稿する必要があります。サーブレットは非常に高価ではありませんので、その数を制限する必要があります。

+0

私は別のjspページを持ち、誰もがカスタムフォームを持っていて、1つのサーブレットだけでそれらを管理する必要があるため(私の決定ではない場合、私はすべてのページに対してサーブレットを作成しますが、 1)。ですからリクエストが来ると、どのJSPページやフォームが生成されたのかを知る必要があります。 Btw私は私の解決策を見つけました:)皆さんありがとう! – untruste

+0

@untrusteデータを送信してきたユーザーに応じて、どのフォームが予期されるべきかを知っている必要があります。 – AxelH

1

あなたのサーブレットでは、doGet/doPostを使用してリクエストを処理し、応答を返すと仮定します.jspからのリクエストでは、非表示の入力フィールドを追加して、 :あなたのJSPで

:サーブレットで

<input type="hidden" name="jspname" value="jspname" /> 

利用のgetParameter mの

新しい隠し入力テキストフィールドを追加しますdoGetメソッドのためのdoPostメソッドまたはgetQueryString()のためのethod:doPostメソッドで

String jspname = request.getParameter("jspname"); 

jspname文字列を利用することにより、あなたは簡単にそれを使用しているJSPを見つけることができます。

0

hidden inputを使用すると、他の回答が解決されます。しかし、あなたはhidden inputなしでそれを行うことができます。

String referer = new URI(request.getHeader("referer")).getPath(); 

referer文字列URIあなたがいっぱいいます。さらに、jspページ名を取得する場合は、java codeを使用できます。あなたはjspページ名を取得することができますregexでも

String[] uriNames = referer.split("/"); 
    String jspPageName = uriNames[uriNames.length-1]; 

Pattern pattern = Pattern.compile("(\\w+)(\\.)(jsp)"); 
    Matcher matcher = pattern.matcher(mydata); 
    String jspPageName = ""; 
    while(matcher.find()) { 
     jspPageName = matcher.group(); 
    } 
関連する問題