トップページ⇒tech
1001コメント344KB

    JAVA+JSP+Struts+Tomcat    Part2

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2005/10/23(日) 16:10:05
あーもぅー矢田亜希子!
こんな環境で仕事したくねぇ〜〜
みんなでMS環境に移行しようぜ!
08098052006/09/04(月) 20:46:12
>808
ありがとうございますー
ここを参考にしてなんとかがんばってみたいと思います。
0810デフォルトの名無しさん2006/09/04(月) 21:27:49
Apache+Tomcatにして、Apacheの方でやっちゃえば?
0811デフォルトの名無しさん2006/09/04(月) 21:30:18
>>808
sessionで出来るか?・・・
>>809
何を悩んでいるのかが解らん。自分(servlet)の同時アクセス数をstatic変数とかで
数えて制限を越えていたらリダイレクトすればよいだけの話なんだが。
0812デフォルトの名無しさん2006/09/05(火) 12:05:38
Tomcat5.0.28 + mod_jk2 + Apache2 上でウェブアプリケーションを動かしています(これを正式版と呼びます)。
そして現在、それのバージョンアップ版を開発しているのですが、同じサーバ機上でテスト稼動(これをテスト版と呼びます)しなくてはいけなくなりました。

ただし正式版は稼動させたままでなくてはいけないので、正式版とテスト版を単純に入れ替えるわけにはいきません。
また内部で自分自身をURLで呼んだりしているので、webapps 以下に正式版とテスト版を、違う名前のフォルダとしてデプロイするわけにもいきません。

でもたとえば、ポート8080から来たリクエストはこれまでどおり正式版に流して、ポート8011から来たリクエストはテスト版に流す、といったことは可能なんでしょうか?
可能だとすればどうしたらよいでしょうか?(ここを参照しろ、とかで結構です)
よろしくお願いします。
0813デフォルトの名無しさん2006/09/05(火) 13:40:42
>>812
> また内部で自分自身をURLで呼んだりしているので

相対URLにしたり、URLをプログラムで生成してあればまったく問題ないと思うのだが。
0814デフォルトの名無しさん2006/09/05(火) 20:23:09
>>813
ありがとうございます。それができればいいんですけど、
そこには権限上手を触れられないので、他の解決策をお聞きしたいんです。
(既存の動いてるコードは変更しちゃダメっていう、よくあるパターンです)

色々調べてるんですが、Tomcatを複数インスタンス起動すればいいのでしょうか?
%CATALINA_BASEっていう環境変数を使うらしいですけど、それを複数インスタンスに対して
どう設定するのかわからないです。
0815デフォルトの名無しさん2006/09/05(火) 20:37:33
>既存の動いてるコードは変更しちゃダメっていう、よくあるパターンです

「動いているコードは触るな」って、
究極のアンチプラクティスとして有名だぞ。
あんたの入っているプロジェクト、ヤバすぎ。
0816デフォルトの名無しさん2006/09/05(火) 21:06:32
それはがってん承知の助なので、質問に答えていただけるとうれしいです。
0817デフォルトの名無しさん2006/09/05(火) 21:11:57
vmware使え
0818デフォルトの名無しさん2006/09/05(火) 21:13:43
Apacheでバーチャルドメイン建てろ
0819デフォルトの名無しさん2006/09/05(火) 21:28:02
ありがとうございます。

>>817
すみません。
tomcatみたいに環境を汚さず起動できるアプリケーションは勝手にインストールできるんですが、
vmwareみたいにドライバ突っ込むものはダメなんです。

>>818
もうちょっとヒントをいただけますか?すみません
バーチャルドメインへアクセスしてきたクライアントは、試験版へ飛ばすってことでしょうか?
0820デフォルトの名無しさん2006/09/06(水) 11:19:13
>>819
ポート別けたって絶対パスなんだからなぁ。
バーチャルドメイン立てても、絶対パスである以上完全な分離は無理じゃないか。
皆が言っているように相対パスに変更するのが手っ取り早いと思う。
か、別の検証用マシン立てるかだな。PC安いし。
1つ思いつくことは、専用のapacheモジュール作ってクッキーとかで本番への
アクセスか検証へのアクセスかを判断し内部リダイレクトするとかかな。
0821デフォルトの名無しさん2006/09/06(水) 11:24:51
え?プログラムにドメイン名含めてコーディングしてあるわけじゃねえだろ?
0822デフォルトの名無しさん2006/09/06(水) 11:31:16
> また内部で自分自身をURLで呼んだりしているので
だからなぁ。怪しいぞ。
0823デフォルトの名無しさん2006/09/06(水) 22:29:52
>>811
>>807がセッションて言うから。。。。セッションて言うからぁ。・゚・(ノД`)・゚・。
0824デフォルトの名無しさん2006/09/06(水) 23:45:09
ServletのdoPost,doGetのメソッド処理中に、TCPセッション(Soket)が切れた
場合、doPost,doGetメソッドは最後まで実行されるのですか?
途中で処理が打ち切られるのですか?
0825デフォルトの名無しさん2006/09/06(水) 23:46:08
されるお
08268242006/09/06(水) 23:49:54
>>825
そ、それじゃ
824に両方書いててどっちが「される」のかわからないです。
0827デフォルトの名無しさん2006/09/06(水) 23:50:04
(・∀・)ニヤニヤ
08288242006/09/07(木) 00:30:13
Tomcatで、動作確認したら、される、、、みたいだ。。。
Java使いは、こういう異常処理は考えてコードかいてるのだろうか、、、

普通は、DataBaseのトランザクションで元に戻るんだろうけど
0829デフォルトの名無しさん2006/09/07(木) 01:31:24
>>828
異常処理も何も普通(普通にエラーとかな)に実行されて、
結果がクライアントに分からないだけだ。
0830デフォルトの名無しさん2006/09/07(木) 01:31:48
「かんたんStruts1.2」という本を読みながらフレームワークに手を出して2日の初心者なんだが、、、
CとJavaはいじってるからプログラムやアルゴリズムに関する理解はある。
だがHTMLやXMLに関しては全くの初心者なんだ。

で、本を読んでいるとXMLに関する記述が相当量あって、そのソースコードがいまいち理解できん。

XMLとか、リファレンスとかの解説してくれるいいサイトって知ってる人いたら是非教えてくらさい。
0831デフォルトの名無しさん2006/09/07(木) 09:22:08
>>828
> Java使いは、こういう異常処理は考えてコードかいてるのだろうか、、、
ガーベジコレクションで何とかしてくれると思っている。

(あながちこれが冗談じゃない人も存在する模様)
0832デフォルトの名無しさん2006/09/07(木) 15:57:55
HTMLやXMLに関しては全くの初心者 が struts ・・・悲劇
XMLは単なる設定ファルと考えたらどうだ。
Struts config でググレば死ぬほど情報はある。
0833デフォルトの名無しさん2006/09/07(木) 16:28:58
>>831
というか、プログラム的にはまったく影響なく正常に動くんだから、特に考える必要もないだろ。
ブラウザでタイムアウトかなんかが表示されるだけだ。
0834デフォルトの名無しさん2006/09/19(火) 13:21:15
JSPがcharset=ISO-2022-JPで実行中なんですが、これをEUC-JPに変更したいです。
でもcharset=EUC-JPだとサーブレットのエラーになってしまいます。
エラーにせずに文字コードを変更する事はどうやったら出来るでしょうか?
0835デフォルトの名無しさん2006/09/19(火) 13:24:46
また出ましたよ俺エラー
0836デフォルトの名無しさん2006/09/19(火) 15:30:04
>>834
<%@ page contentType="text/html; charset=EUC-JP;" pageEncoding="ISO-2022-JP"%>
では
0837デフォルトの名無しさん2006/09/21(木) 20:12:30
TOMCAT環境のWebアプリにvodafoneからアクセスしてたらページが表示できませんっていうエラーが発生しました。ログを見るとresponse already committed とのこと。原因わかる人いますか?
ドコモとAUではこの事象は発生しません
0838デフォルトの名無しさん2006/09/22(金) 15:26:54
>>837
確か、既に forward や、redirect を指定済みのリクエストに対して、さらに
forward や、redirectをするとそのエラーになるのだが・・・
vodafoneだけ画面遷移的に矛盾があるとかかな。
0839デフォルトの名無しさん2006/09/25(月) 12:16:29
FEDORAでアパッチトムキャット連携しようとして環境構築したんだけど、アパッチのテストページもみれるしトムキャットのサーブレットも動いてしまうのは、連携ができていないのでしょうか
0840デフォルトの名無しさん2006/09/25(月) 12:27:44
Tomcatのサーブレットも動いてしまうってのは、8080でアクセスできるってことを言ってるのか?
0841デフォルトの名無しさん2006/09/25(月) 12:30:02
>>839
?
tomcatの http://localhost/examples/jsp/index.html
とかが、8080 ポート指定なしで見れたら apacheとの連携はOK。
0842デフォルトの名無しさん2006/09/25(月) 12:51:47
>840
>841
ありがとうございます!8080ポートなしでサーブレットもみえています。
ということは連携できているのかな。うーん。

あと、web系やjavaの開発を仕事でしたことないので作法みたいのがわからないんですが、JSPとサーブレットってどのように使い分けるものなのでしょうか。
業務に深くかかわらないサービスツールなんかをイントラで適当に作ったりしましたが、動けばいいレベルだったのでそこらへんがわかりません。
トムキャットはアパッチと連携するべきなんてのもしりませんでした
0843デフォルトの名無しさん2006/09/25(月) 13:18:40
>>842
MVCというのがキーワードなんだが、その辺はかなり深いので本でも買って勉強なさい。
0844デフォルトの名無しさん2006/09/25(月) 13:43:31
>843 ありがとうございます。MVC、やはりきいたことないです。勉強してきます。
連携でコメントいただいたかた、ありがとうございます。たすかりました。
0845デフォルトの名無しさん2006/09/25(月) 21:43:43
+SPRING
0846デフォルトの名無しさん2006/09/27(水) 22:27:41
>>844
MVCとかはほっておいて、単にプログラムはServletにJavaで書いてJSPにはJavaコードを書かないようにするくらいでいいと思うよ。
0847デフォルトの名無しさん2006/09/27(水) 22:29:53
>>842
それと、TomcatはApacheと連携する「べき」ということもない。
Tomcat単独ではできないApacheの機能が必要なときに使えばいいだけ。
0848デフォルトの名無しさん2006/09/28(木) 10:53:38
静的コンテンツはapacheに任せた方が速いし負荷減るし色々と便利ではある。
0849デフォルトの名無しさん2006/09/29(金) 01:03:39
とりあえず、ローカル開発環境に Apache はいらん。
結合以降で十分だ。
0850デフォルトの名無しさん2006/09/29(金) 17:07:20
>>848
業務アプリだと静的コンテンツほとんどないしな。
0851デフォルトの名無しさん2006/09/29(金) 17:21:12
>>850
画像もCSSも使わないならね。
0852デフォルトの名無しさん2006/09/29(金) 17:26:27
質問させてください。


Tomcatの起動時から毎時に適当な処理を走らせたいのですが、
初期化クラスの先でスレッドで実装したクラスに任せても問題無いでしょうか?

他に手だてがあれば教えていただければ幸いです。
よろしくお願い致します。
0853デフォルトの名無しさん2006/09/29(金) 17:34:45
>>852
cronで定期的にwgetでサーブレットたたくとか。
08548532006/09/29(金) 17:36:01
>>852
補足すると普通はそれをjavaアプリでやるんだがね。
0855デフォルトの名無しさん2006/09/29(金) 17:38:51
>>850-852
商用サイトではそうはいかない。
0856デフォルトの名無しさん2006/09/29(金) 22:50:32
ユーザごとに項目の値が異なるサイトの構築は、皆さんセッションを使ってるのでしょうか?
ログイン時にユーザエンティティを生成して、そこの値を反映させる形で実装するのはおかしいですかね?
08578522006/09/29(金) 22:53:15
>>853
レスありがとうございます。

cronをトリガにするのが一般的でしたか…
毎時処理は別アプリをつくった方が良いみたいですね。

設計を見直してみます。ありがとうございました。
0858デフォルトの名無しさん2006/09/30(土) 04:50:14
>>855
うん、だから業務アプリと前置きしてるでしょ。
Javaが使われるのはほとんど業務アプリなわけで。
0859デフォルトの名無しさん2006/09/30(土) 04:51:38
Tomcatでも普通にCSSやら画像やらがある程度ならさばけるしな。
0860デフォルトの名無しさん2006/10/01(日) 17:08:22
Struts使ったページ遷移ではなく、セッションにユーザ情報を埋め込んだ画面遷移って邪道でしょうか?
>ショッピングサイト構築

あと、ユニークユーザが2000人くらいのサイトでもApache + tomcatの連携って必要でしょうか?
静的ページはトップページだけなのですが。
0861デフォルトの名無しさん2006/10/01(日) 19:17:01
不要だな。Tomcatだけでいい。
まあ、金がかかるもんでもないし、手間もそれほどないから、とりあえず連携させておいてもいいと思うが。
0862デフォルトの名無しさん2006/10/01(日) 19:31:23
運用を考えるとApache使ったほうがよくね?
監視ツールとかアクセス解析ツールとかいろいろ対応してそう。
08638602006/10/01(日) 20:08:03
>>861
ありがとうございます。
Apache連携はスケジュール見ながら考えることにします。

>>862
監視は鯖に向けてツールを仕掛ける予定なので良いかなぁ、と。
0864デフォルトの名無しさん2006/10/01(日) 23:41:31
>>863
Tomcatにデプロイするアプリをすべて外部公開するならそれでもいいと思うよ。

ウチでは、社内からしか見えないマスタメンテアプリとか、Tomcat Managerアプリとかも
動いてるから、Apacheと連携させている。外部からはApache経由でしか見えないようにして、
社内からはTomcatを直接見るようにしている。
0865デフォルトの名無しさん2006/10/01(日) 23:49:34
ちょっとしたファイアーウォールが一枚ってとこか。
08668602006/10/02(月) 00:07:32
なるほど。参考になります。

本番環境は純粋にそのWEBアプリだけを動かす予定なので、ひとまずApache連携は置いておきます。

0867デフォルトの名無しさん2006/10/04(水) 17:07:04
JSP内で
<%!
public boolean hoge(){
boolean b = false;
return b;
}
%>
こうやってメソッドを宣言した時、
他のJSPからこのメソッドをどうやったら呼べますか?
0868デフォルトの名無しさん2006/10/04(水) 19:01:50
>>867
なぜbeansにしないのが不思議なのだが、なぜ includeにしない?
0869デフォルトの名無しさん2006/10/04(水) 19:15:54
>>868
日本語でおk。
0870デフォルトの名無しさん2006/10/04(水) 19:40:35
>>869
どこからどう見ても日本語。。。
0871デフォルトの名無しさん2006/10/04(水) 19:42:14
age
0872デフォルトの名無しさん2006/10/04(水) 19:43:13
意味が通じない日本語だけどね。
0873デフォルトの名無しさん2006/10/04(水) 19:47:41
>>872
beansとincludeでぐぐってみたら?
08748672006/10/04(水) 19:54:39
とりあえず、質問のやり方だけ教えてください。
0875デフォルトの名無しさん2006/10/04(水) 19:59:14
JavaBeansとincludeは知っているが、
>>868が何を言っているのか何を言いたいのかまったく解らない。
0876デフォルトの名無しさん2006/10/04(水) 20:19:25
>>868 は在日なんじゃねーの?
0877デフォルトの名無しさん2006/10/04(水) 20:44:18
お前らのエスパー能力の低さに絶望した
0878デフォルトの名無しさん2006/10/04(水) 21:00:20
それじゃお前が感じ取ってくれ
08798672006/10/04(水) 21:59:08
誰もわかりませんか?
0880デフォルトの名無しさん2006/10/04(水) 23:36:24
>>879
ていうか、JSP内でメソッドを定義することにビックリ。
JSP絡みのプロジェクトは3回ぐらいしかないが一度もみたことないぞ。

JSPは実行時にはJavaのクラスへと変換されるわけだが、
他のJSPにあらかじめそのクラス名とメソッド名を認識させておくつもりかい?
実現したいことがよく分からんが、他の実装方法を考えるべきでは?
08818682006/10/04(水) 23:56:58
自分でも笑える文脈だw
ちょっと追い込みでテンパってた。
0882デフォルトの名無しさん2006/10/05(木) 09:52:38
JSP内でメソッド定義ってできるんだ・・・
つーかやろうとした事も無かった。 なんの為にやるのかさっぱりわからんし。
で、呼び出すのは一般的には無理だろう。 無理やりやればなんとか呼べるかもしらんが
webアプリサーバ依存の処理になるのは間違いない。
beanにそのままコピペすりゃ2〜3分で可能だろうが。
08831/22006/10/05(木) 10:33:00
長いので二本立てで失礼します

Strutsを利用してWebアプリ組んでるんですが、
public class HogeAction extends Action {
  public ActionForward execute(ActionMapping map, ActionForm form,
                      HttpServletRequest req, HttpServletResponse res) {
    HttpSession session = req.getSession();

    List list = null;

    // 掃除処理0 ここから
    list = session.getAttribute("hoge");
    if (null != list) {
      list.clear();
    }
    // 掃除処理0 ここまで

    session.removeAttribute("hoge");   // 掃除処理1 ここから
    request.removeAttribute("result");  //
    System.gc();                // 掃除処理1 ここまで

    list = hogeBean.createList(); // hogeBean.createList()は結果データのListオブジェクトをnewして返す
    List result = list.subList(from, to);  // 結果表示データ作成

    session.setAttribute("hoge", list);
    request.setAttribute("result", result);

    return mapping.findForward("success");
  }
}

08842/22006/10/05(木) 10:33:48
上記のようなActionクラスと"result"に格納されているリストの中身を表示するhoge.jspがあって
HogeAction ---> hoge.jsp ---> HogeAction --> hoge.jspと交互にfowardしています。
hoge.jsp内ではJSTLの<c:forEach>タグを使って"result"の中身を表示しています。
hogeBean.createListが返すListオブジェクトのデータサイズは条件によって異なるんですが、
このListオブジェクトのデータサイズが大きい場合、「掃除処理0」を行わないと、
hogeBean.createListメソッドでOutOfMemoryErrorが発生します。
また、「掃除処理0」の代わりに「掃除処理1」を行っても状況は変わりませんでした。
「掃除処理1」の処理を行えば、sessionから不要なListオブジェクトは掃除できると
思っていたんですが、
これらのremoveAttributeメソッドではListオブジェクトに対する参照は残ってしまうものなんでしょうか?
0885デフォルトの名無しさん2006/10/05(木) 11:01:05
>>884
sessionスコープから削除されるだけで、オブジェクトへの参照をどこかで保持していた場合は
GCの対象にはならない。
そのコードでは、「System.gc();」の時点でも変数listがList型オブジェクトの参照を保持している。
いったんlistにnullを入れてからSystem.gc();すればいいんじゃないの?

※アプリケーションからGCを呼び出すなんて愚の骨頂だがw
08868842006/10/05(木) 11:58:22
>>885
レスthxです
書き方が悪くて誤解があったかもですが
「掃除処理0」と「掃除処理1」はどちらかしか有効にしてません。
なので、「掃除処理1」の箇所を通過する場合は変数listにはnullが入っています。
また、掃除処理0の箇所を通過する場合はSystem.gc()は実行しません。

さらに情報後出しで申し訳ないですが、
結果表示データ作成の部分の
List result = list.subList(from, to); を
List result = new ArrayList(4); に置き換えて、「掃除処理0」をコメントアウト、
「掃除処理1」を有効にして試してみたところ、OutOfMemoryErrorは発生しませんでした。

また、「掃除処理0」をコメントアウト、List result = list.subList(from, to);に戻しつつ、
JSPの一部をコメントアウトしてJSPでは"result"にセットされているオブジェクトを
参照しないようにしてもOutOfMemoryErrorは発生しました。

以上のことからsessionやrequestのsetAttributeメソッドを使ってsessionにオブジェクトを
格納してJSPにfowardすると、自分が開発しているクラス以外のどこかにオブジェクトの
参照が残ってしまうのでは?と愚考した次第なんですが、的外れですかね?

長文、乱文スマンです
0887デフォルトの名無しさん2006/10/05(木) 12:31:52
>sessionやrequestのsetAttributeメソッドを使ってsessionにオブジェクトを
格納してJSPにfowardすると、自分が開発しているクラス以外のどこかにオブジェクトの
参照が残ってしまうのでは?

それであってるよ。
08888842006/10/05(木) 12:52:36
>>887
thxです。

てことは、Actionクラス内でsessionに格納されているオブジェクトを
明示的に掃除して因果を断ち切ってやらないといけないみたいですね

レスくれた方々ありがとでした
0889デフォルトの名無しさん2006/10/05(木) 17:30:25
scopeのsessionって携帯電話標準のブラウザでも扱える?
そもそもrequestと使い分けるメリットある?
0890デフォルトの名無しさん2006/10/05(木) 17:38:30
>scopeのsessionって携帯電話標準のブラウザでも扱える?
扱える

>そもそもrequestと使い分けるメリットある?
ある
0891デフォルトの名無しさん2006/10/05(木) 18:02:23
使えるけど、URLRewriteがちょいめんどいよな。
0892デフォルトの名無しさん2006/10/07(土) 01:36:17
携帯電話向けのショッピングサイトを構築したいと考えているのですが、
ユーザ情報(認証など)の保持は普通はHttpSessionで実装するものなのでしょうか?
0893デフォルトの名無しさん2006/10/07(土) 02:11:12
>>892
うん。
0894デフォルトの名無しさん2006/10/07(土) 23:32:42
JSPの作成でプレビューを見ながら作成できるツールって無いかな?
0895デフォルトの名無しさん2006/10/08(日) 01:27:30
ちょっと困ってます。質問させて下さい。

4〜5年前にPerlで作ったシステムをjavaで作り直す事になり、
tomcat5 + struts1.2 でWebアプリを構築しようとしてます。

設計は、お客さんの会社のSEが担当なのですが、
その会社にはjavaの開発経験がないという事で、
製造は外注であるうちの会社が担当する事になりました。

で、お客さんが出してきた設計書を見ると、
『エラー画面:○○の入力が不正です。ブラウザの「戻る」ボタンで前画面へ戻り、入力し直して下さい。』
のように、ブラウザの「戻る」ボタンを使用するのが前提の仕様になってるんです。

普通、java でWebアプリを組む場合、
 ・ブラウザの「戻る」「更新」は使うな
 ・サブミットの連打するな
っていう操作上の制約をつけ、工数に余裕がある場合はJavaScriptで防止する処理を入れたりして、
それでもそれらのボタンが押されちゃった場合は、画面遷移エラーにする、
っていうのがセオリーだと思うのです。今までそうして来たし。

なので、レビューの時に
『ブラウザの「戻る」ボタンの使用は禁止するのが普通です。』
ってお客さんに言ったんですが、
『Perlで出来るのに何でJavaで出来ないんだ。』と言い、納得してもらえないんです。

このお客さんに『ブラウザの「戻る」ボタンは使用は禁止』を納得してもらえるには、
どういう説明をすればいいでしょうか?
ヒント、アドバイスなどあったら教えて頂けますか?
よろしくおねがいします。
0896デフォルトの名無しさん2006/10/08(日) 01:32:02
知るか。顧客要件なら受け入れろ。戻るボタンOKならそれでいいじゃないか。
0897デフォルトの名無しさん2006/10/08(日) 01:33:37
>セオリーだと思うのです。今までそうして来たし。
お前が今までどうしてきたかなんて客には関係ないだろw
0898デフォルトの名無しさん2006/10/08(日) 01:36:06
素で気になるんだが、何で出来ないの???
0899デフォルトの名無しさん2006/10/08(日) 08:20:57
>>895
戻るボタンの操作を許容すれば良いだけじゃね?
セオリーにこだわって顧客の心証悪くするのは頭いいとは言えない。
0900デフォルトの名無しさん2006/10/08(日) 08:48:34
戻るボタンである画面へ戻ってきた時に、
・どの画面から遷移してきたか(戻ってきたか)を気にしなくてよい
・以前の入力状態を再現しなくてよい
ということであれば、「戻る」ボタンが使えても問題はないはずなんだけど、
通常は完全に画面遷移をアプリ的に制御したいはずだから、
(セキュリティー的にも何かあったはず)戻るボタンは、使えないようにする
というか、Illegal State Errorへ振っちゃうのが普通だと思う。
0901デフォルトの名無しさん2006/10/08(日) 11:03:41
perlで作られた前システムは、
戻った時の処理はどうだったんだろ?
09028952006/10/08(日) 13:34:41
みなさま、くだらない質問にレスどうもです。

>>896
>>897
>>899
確かにおっしゃるとおりです。

>>898
戻るボタンが使えるように出来るか出来ないかといえば、出来ると思います。
ただ、出来るようにしちゃうと、想定した画面遷移以外の遷移をされちゃう恐れがあるから、
出来ないように制御するものだと思ってましたが。。。

>>900
そうですよね。
そのセキュリティー的に何かあったはず、の部分を理論的に説明できれば納得してもらえそうです。

>>901
Perlのシステムは「戻る」を使う仕様だと思います。詳細は知らないですが。

顧客用件だから、「戻る」ボタンで戻れるようにしろ、と言われれば最終的にはそうするしかないんですが、
お客さんのほうも、よく考えた上で「戻る」ボタンで戻る仕様にしたんじゃなくて、
設計書の各画面に自前の「前画面へ戻る」ボタンに関する項目を書くのがめんどくさかったから、
とか何かそういう理由でブラウザの「戻る」を使用するような仕様にしたっぽいのです。
うちの会社の指摘を飲むと、設計書を修正しなきゃいけなくなるから、
わざと納得してないような感じなのです。

セキュリティー的にまずいという説明ができれば、納得しそうな感じですので、
これからそのへんを調べてみます。ありがとうございました。
0903デフォルトの名無しさん2006/10/08(日) 17:17:39
戻ることが怖いんじゃなくて、戻った後の画面で送信されちゃうのが怖いんだろ。
セッション側で適切にプロセス管理すればいいだけのこと。
0904デフォルトの名無しさん2006/10/09(月) 02:12:05
>>902
ブラウザの戻るボタンは自由の象徴。
WEBは自由なんだ!
0905デフォルトの名無しさん2006/10/09(月) 03:31:33
あほか。顧客要件であっても、これをやめればこんだけ金浮きますよって断れ。
ブラウザの戻るボタンなんか、今時許容するなよ。

レスポンスヘッダに no-cache 付けて強制的に戻れなくすればいい。
っつか、そんなんデフォルト常識仕様だ。
>>903 みたいなことしても、客に 100 画面戻って submit したらうまく動かねーぞとか
わけ分からんこと言われるぞ。
だいたい SSL とかにしたら戻れなくなるんだ。
つまりキャッシュ使って戻るというのはセキュリティ的に問題アリアリなんだよ。
0906デフォルトの名無しさん2006/10/09(月) 14:47:17
商品の注文とかならともかく、バッチ的に黙々と登録するような奴なら戻れなやっとられんわな
09071/22006/10/09(月) 17:46:26
>>848 >>849 >>850 >>851 >>855
を見ていてみなさんに質問があります。
(長文失礼します)

たしかにインターネットの不特定多数に公開していて、
アクセスも結構あるようなwebアプリだと、画像等の性的ファイルは
apacheに任せると有効なのは理解できます
(さらに外にsquidなどがいると、squidがキャッシュしてくれるし)

ところで開発の段階からこういうことを意識してディレクトリ構成
を考えてますか?(開発を始めるときのCVSのディレクトリ構成など)
それとも結合フェーズからディレクトリ構成を考えてますか?

webアプリのcontextがhogeとすると、以下のようなディレクトリ構成にすれば、
{hoge}\
 - index.html
 - aaa.html
 - bbb.html
 + img\
  - hoge.gif
 + WEB-INF\
  + classes\
   + hoge.class

tomcat単体で開発しているときは、
ブラウザからは http://servername:8080/hoge/img/hoge.gif とアクセスできます。
だけど apache連携するときは、apacheの設定で
URL が http://servername/hoge/〜 のように /hoge 以下は tomcat に任せ、
URL が http://servername/img/〜 のように /img 以下はapache に任せたい
ということをしなければなりません。
09082/22006/10/09(月) 17:49:17
そこでみなさんに質問です。
以下の4つの案を考えましたが、みなさんどうやっているのでしょうか?
--------------------------------------------
1.開発時から apache も開発メンバーにインストールさせ、
  開発時から、img ファイルは webapps の hoge Context の外に置き、
  プログラムからリンクを作るときも "../img/hoge.gif" のように、hoge から上に上ってからリンクを張るようにする。
2.開発時は↑のディレクトリ構成のように tomcat 単体で動かせるようにしておき、
  結合時環境にリリースするときから、性的ファイルを apache 配下に置かれるようにデプロイする。
  リンク先のトップディレクトリのURLが変わるので、そこはプロパティファイルなどで対応する。
3.そもそも mod_jk や ajp の設定で、/hoge は tomcat に任せるが、
  /hoge/img/ は tomcat には任せない ということができますか(できないと思っていますが・・・)
4.思いついたこと:
  アクセスがすごい多いサイト等では、webサーバの前にsquidを置き、
  キャッシュ(リバースプロキシ)として使っているところもあると思います。
  そもそも squid はURL単位でキャッシュしてくれるので、img を tomcat の context配下に
  置き、URL が http://servername/hoge/img/hoge.gif となっても、

  ・初回は Tomcat が画像を処理する
  ・http://servername/hoge/img/hoge.gif という URL を squid がキャッシュしてくれるので、
   2回目は http://servername/hoge/img/hoge.gif 宛てのリクエストは tomcat はおろか
   apache へも届かなくなる
  ・なので上記のようなディレクトリ構成にそもそも悩まなくてもよい
--------------------------------------------
4案の注:
squid を前に置くとき、/hoge 以下はキャッシュの対象からはずすような設定はしますか?
それともそんなことはしませんか?
# Servlerなどもキャッシュの対象にしてしまうと、動的コンテンツもキャッシュされてしまう?
# でもそういうときは、Servletの response ヘッダで Pragm: no-cache とか Cache-Control: no-cache
# を吐いて、キャッシュされないようにする?


レス数が900を超えています。1000を超えると表示できなくなるよ。