サーブレットを使用して簡単なWebアプリケーションを構築しています。私は初心者ですが、この技術の大部分を学ぼうとしました。私が理解できない何かがあります。私のサーブレットの一つは、それがきれいに必要なファイルを含む要求を、GETに応答便利BalusCのFileServletサーブレットが呼び出し元のJSPとセッションを認識させる方法
http://balusc.blogspot.mx/2007/07/fileservlet.html
です。ゲストと管理者:
は、私は二人のユーザーの種類を持っているDygraph
http://dygraphs.com/
用のCSVファイルを提供するために、こののFileServletを使用しています。 CSVファイルをダウンロードすることはできませんが、グラフを見ることは可能です。管理者は両方を実行できるはずです。
fileServletは、URLパターンに応じて:file/*(*はファイル名)として応答し、DygraphはURLで指定されたファイルを読み込むので非常に便利です。
このWebアプリケーションにはloginServletが組み込まれています.Dygraphに指定されているURLをコピーして貼り付けるだけでファイルパスを避けることができます。 FileServletはすでにセッションとloggeduserをそのセッションから取得できますが、GETメソッドを呼び出したページがどのように検出されたかはわかりません。 JSPコード内から呼び出されたときにのみfileservletにファイルを提供し、ブラウザのアドレスバーからは呼び出さないようにします。
私は少し説明しましょう: 「$:私は意味
は、グラフを表示する必要があり、次のJavaScriptコードUSER-ゲストを-as
<div id="graphdiv2" style="width:640px; height:480px;">
<script type="text/javascript">
g2 = new Dygraph(
document.getElementById("graphdiv2"),
"${messages.rutacsv}", // path to CSV file
{
rollPeriod: 10,
showRoller: true
}
);
</script>
</div>
変数(のFileServletには、ファイルを提供しています)ファイル/ 2012-04-20_1.csv "
だから、T:{} messages.rutacsv」
このようなもののためにサーブレットによって置き換えられます" Dygraphはファイルをうまく読み込み、線をプロットします。
しかし、ユーザーがContextNameの後にこのURLをコピーしてブロックすると、FileServletが検出できて、Dygraphだけがファイルをダウンロードできるようになります。例えば
、彼のブラウザでは、ユーザがタイプならば:それをダウンロードできないようにする必要があり
http://localhost:8080/MyWebApp/file/2012-04-20_1.csv
。管理者だけができる必要があります。
今、FileServletを実装して別のURLパターンまたはPOSTメソッドで呼び出す必要があるかもしれないと考えています。単純なユーザーのコピーパスタが「origining-JSP」チェックを通過できないようにします。
私はStruts2で試してみることにしましたが、これはこのアプリケーションではあまりにも複雑です。簡単なサーブレットやJSPを使用して、利便性と開発の容易さのために放棄しました。
サーブレットフィルタは、URLと現在のユーザーロールをチェックし、管理者のみが直接ダウンロードできるようになります。他のリクエストについては、404を返すか、JSPにリダイレクトを送信してください。 –
しかし、私はユーザーの役割を実装しているとは思わない。セッション上でのみsession.setAttribute( "logonuser"、 "username")を実行します。私はその追加の仕事をしなければならないと思います...私はしませんか? –
要件によって異なります。ログインしているユーザーが直接ダウンロードできる場合は、 'logonuser'属性がセッションに存在するかどうかを確認します。そうでない場合はログインサーブレットにリダイレクトします。 –