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

    JAVA+JSP+Struts+Tomcat    Part2

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/10/23(日) 16:10:05
あーもぅー矢田亜希子!
こんな環境で仕事したくねぇ〜〜
みんなでMS環境に移行しようぜ!
06666642006/07/24(月) 18:07:37
>665
初心者質問スレは覗いてないんで別人です。
>・pageEncoding="Shift_JIS"は正しいのか?
これに関しては自分でも実はよくわかっていません。
ttp://www.atmarkit.co.jp/fjava/rensai3/mojibake01/mojibake01.html
ここを参考にしてみました。
JSPコンパイラはJDKです。
Eclipseを使用しています。
ttp://zerowind.no-ip.org/dbweb/input/down.jsp?DownName=test34013.JPG
こんな感じで文字化けしています。
ttp://zerowind.no-ip.org/dbweb/input/down.jsp?DownName=test34014.JPG
実行画面も文字化けしています・・・
06676642006/07/24(月) 18:09:14
あとすいません、
<%@ page language="java" contentType="text/html; charset=Windows-31J"
pageEncoding="Shift_JIS" %>
とありますが、
<%@ page language="java" contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_JIS" %>
の間違いですorz
0668デフォルトの名無しさん2006/07/24(月) 18:31:09
>>665
ANSI Shift_JIS じゃなくて、Windows標準文字エンコーディングだったら
<%@ page language="java" contentType="text/html; charset=Windows-31J"
pageEncoding="Windows-31J" %> だぞ。

>>664 で「しばらくサーバを立ち上げていると」とあるが、ただ立ち上げっぱなしじゃなくて
Eclipseプロジェクトをクリーンしたり「再ビルド」したり「更新」したりした後に
化けてるんじゃないか?

文字化けの原因はEclipseの可能性大。
Tomcat Launcher Plugin使ってるだろ?

JSP→Javaソースコードに変換されるとき、Tomcatのデフォルトでは
ソースコードがUTF-8で出力される。
つまり、work以下にあるJSPから変換されたソースコードはUTF-8で出力されている。

しかしEclipseのコンパイラやエディタの設定はデフォルトでMS932(Windows-31Jと同じ)。
上記のクリーン等の処理を行うと、UTF-8のコードを無理矢理MS932(Windows-31J)で読み込んで
Eclipse上で無理矢理MS932(Windows-31J)でコンパイルされることになる。
だから、最初はTomcat上でコンパイルされるから化けず、
その後クリーン等の処理によりEclipse上でコンパイルされると化ける。
06696682006/07/24(月) 18:32:20
対策は2つ。
1. Eclipseプロジェクトの設定を変更して、エディタやコンパイラの設定を
 すべてUTF-8に統一してしまう
2. TomcatがJSPからJavaソースコードに変換するときにUTF-8ではなくWindows-31Jで
 出力するように設定を変える。

2. は、Tomcat/confにあるweb.xml(アプリ毎に作成するweb.xmlではないので注意)を
 編集する。 jsp という名前で登録されているServletがあるので、
 「javaEncoding」という初期化パラメータを追加し、値に「Windows-31J」を設定する。

06706682006/07/24(月) 18:33:17
>>668の1行目は>>666の間違いorz
06716642006/07/24(月) 18:56:25
>668-669
丁寧な説明ありがとうございます。
説明を元に変更を加えてみました。

1.のEclipseプロジェクトの設定変更を行ってみました。
プロジェクト右クリック→プロパティ→テキストファイルのデフォルトエンコード
これをUTF-8にしてみましたが、文字化けは解消されませんでした。

2.のWeb.xmlのjspの項目に
<javaEncoding>Windows-31J</javaEncoding>

と追加してみたところ今のところ文字化けは解消しません・・・
ちなみにShift_JISにしていたのはWindows-31Jにしていたときよりも、
文字化けの発生率が少なかったからです(原因はわかりませんが・・・)
06726642006/07/24(月) 18:58:43
追記です。
いま確認したところJSPのJavaソースコードは文字化けしていませんでした。
(UTF-8に変更したからだと思います。)
06736682006/07/24(月) 19:07:58
>>671
>1.のEclipseプロジェクトの設定変更を行ってみました。
>プロジェクト右クリック→プロパティ→テキストファイルのデフォルトエンコード
>これをUTF-8にしてみましたが、文字化けは解消されませんでした。

UTF-8にしてからコンパイルし直してみた?


>2.のWeb.xmlのjspの項目に
><javaEncoding>Windows-31J</javaEncoding>

ちがうよ。よくTomcatが起動したな。

 <servlet>
  <servlet-name>jsp</servlet-name>
  <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
  <init-param>
   <param-name>fork</param-name>
   <param-value>false</param-value>
  </init-param>
  <init-param>
   <param-name>xpoweredBy</param-name>
   <param-value>false</param-value>
  </init-param>
  <init-param>
   <param-name>javaEncoding</param-name>
   <param-value>Windows-31J</param-value>
  </init-param>
  <load-on-startup>3</load-on-startup>
 </servlet>
06746642006/07/24(月) 19:10:17
うわ、ぜんぜんちゃうorz
どうりでソースコードがぶっ壊れるはずだ・・・
全開で修正かましてきます。
ちなみに、UTF-8にしてからコンパイルしなおしました。
06756642006/07/24(月) 19:19:44
web.xmlに修正を加えてコンパイルもしなおしてみましたがやっぱり文字化けしてしまいます・・・
0676デフォルトの名無しさん2006/07/24(月) 19:26:21
>>675
まさか、>>671 の1.と2.の両方をやってないよね?
どっちかだよ。
06776642006/07/24(月) 19:30:03
いろいろいじってたらなぜか文字化けが直りました・・・
わけがわからないorz

ちなみに変更点は
web.xmlにjavaEncodingを追加
すべてのJSPファイルをコンパイルしなおす。
デフォルトエンコードを デフォルト→UTF-8→デフォルト

これで文字化けが直りました。
このまま文字化けが出ないようならこれでいってみたいと思います。
丁寧に説明していただきありがとうございました。

ただ、編集中によくわからないことが起こりました。
デフォルトエンコードを変更した前後だとは思うのですが、
元のJSPファイルの日本語もなぜか文字化けしていました。
バックアップはとってあったのでそこからもどしましたがなぜこんな状態になったのかよくわかりません。

いろいろトラブルもありましたが、無事解決し大変たすかりました。
664さん、どうもありがとうございました。
06786642006/07/24(月) 19:30:48
書き込んでいる間に書き込まれてたorz
>676
まさにそのとおりで両方ともやってました・・・
0679デフォルトの名無しさん2006/07/25(火) 21:55:39
JSPでステートメントを作る時、Resultsetのタイプを指定するとsqlで結果が取れなくなるのはなんで?
0680デフォルトの名無しさん2006/07/25(火) 22:09:45
いろんな意味で「出直せ」と言いたいな。
0681デフォルトの名無しさん2006/07/26(水) 21:54:19
携帯用の開発をしたことある人に聞きたいんだけど、
docomo,au,vodafoneではHTMLの規格が違うのでレスポンスを変換する必要があるんだけど、
これをコンテンツ変換サーバ(user-agentかなんか見て変換してくれる)なしでやるのは無謀かな?
とりあえず考えてるのは
1.ResponseWrapperとかFilterでレスポンスのHTMLにテキスト処理。タグを置き換えたりとか。
2.xsltを使う。(出力後の構造が決まってないと無理かも。ページ毎に用意する羽目になりそう?)

1.でやる場合だと変換クラス用のインターフェースだけ公開して、
ファクトリにuser-agentわたすと適切なのを返してくれるようにするみたいなのを考えてる。
まぁ何種類の変換クラスを実装しなきゃいけないかわからんが。。。
2.はまだ調査中。でも多分無理だと思う。

意見求む。
0682デフォルトの名無しさん2006/07/27(木) 02:54:54
>>681
規模による。
数ページなら、どんな手法つかってもいい。
0683デフォルトの名無しさん2006/07/27(木) 11:52:28
>>681
クォリティにもよる
ある程度の妥協が可能なら全キャリア対応のHTMLでやることも可能。
06846812006/07/27(木) 20:22:46
貴重なご意見ありがとうございます。

二次、三次開発があるので今回でいい感じの基盤を築いておきたいのです。
誰かフリーで作ってたりしないかなと思ってみたり。
0685デフォルトの名無しさん2006/07/27(木) 20:38:07
XML+XSLTでCocoonとかどうよ
0686デフォルトの名無しさん2006/07/27(木) 22:37:16
できたら公開してくれ。だれかリポジトリでも立てて。
0687デフォルトの名無しさん2006/07/28(金) 19:17:49
携帯はVGAフルブラウザに移行中。
0688デフォルトの名無しさん2006/07/29(土) 00:29:33
フォルダの一覧を表示するJSPを作っています。
例えば
[aho]
+[boke]
0689デフォルトの名無しさん2006/07/29(土) 00:37:11
うへえ、途中でやってしまった
えっと、JSP+Servletで
エクスプローラーをShiftクリックで立ち上げたとき左に出てくる
アレが作りたいのですが、一体どうしたらよいのでしょうか?
はじめは
[aho]
[boke]
[hoge]
となっていたのが
[aho]
+[tonma]
+[manuke]
[boke]
+[nurupo]
+[unko]
[hoge]
こんな感じにツリー状に表示したいんです。
0690デフォルトの名無しさん2006/07/30(日) 01:19:47
CommonsIOあたりを使ってファイルの情報を取得してリクエストとかにセット、
JSPでセットした情報を使ってulなりを使え。
折りたたみができるとかはJavaScriptスレで。
06916892006/07/30(日) 02:20:41
>>690
早速調べてみます。ありがとうございます
0692デフォルトの名無しさん2006/07/30(日) 02:32:26
JSP+Servletで、アクセスがあるたびにではなく、一定間隔ごとに
他のHTTPサーバにアクセスプログラムを作りたいのですが、一般的に
このような場合どのようにするのでしょうか?
Servletからthreadを起こそうと考えているのですが、threadを起こす場合
気をつけることとかはありますか?
0693デフォルトの名無しさん2006/07/30(日) 04:33:48
>>692
Servlet は loadonstartup にして、destroy でちゃんと
リソース使ってれば開放してスレッドを止めること。同期化ももちろんいる。
あと、運用を考えるとログとかモニタできる仕組みを用意しとけばいい。
スレッド死んでて障害とかな。
0694デフォルトの名無しさん2006/07/30(日) 13:01:33
>>692
ちゃんとクラス化すればテストもしやすくていいと思うよ
06956922006/07/31(月) 02:09:32
>>693 >>694
Thanksやってみる
0696デフォルトの名無しさん2006/07/31(月) 22:15:26
FLASHが挿入できない・・・。HTMLだとすんなりできるけど、
JSPでどうすればできますか?
0697デフォルトの名無しさん2006/07/31(月) 22:37:19
>>696
同じだよ
0698デフォルトの名無しさん2006/07/31(月) 22:45:51
>>696
コンテキストパスとか怪しいんじゃないかな
0699デフォルトの名無しさん2006/07/31(月) 22:47:12
>>697
なぜかできないんですよ。ずっと読み込み状態になります。
out.println("FLASH読み込み内容");
だとうまくいくんですけど・・ちょっとかっこ悪い(そんな事いえる立場じゃないけど)
0700デフォルトの名無しさん2006/07/31(月) 23:54:56
HTMLの生ソース見比べればいいのでは?
0701デフォルトの名無しさん2006/08/01(火) 01:14:29
さっきまでhttp://localhost:8080/が動いてたのに、唐突にアクセスできなくなりました
ブラウザの左下ではlocalhost を待っています...と表示されていますが
何が原因なのでしょうか?
0702デフォルトの名無しさん2006/08/01(火) 01:20:46
唐突?そんなんでわかるかくそヴぉけ
0703デフォルトの名無しさん2006/08/01(火) 01:21:16
知るか
0704701 Eclipse3.1.1/Tomcat52006/08/01(火) 15:39:14
Tomcatをまず起動してサーブレットを動かすと正常なのですが
Tomcatを再起動してサーブレットを動かそうとするとl永遠に待機状態になります
ブラウザはFirefoxとIEで両方試したのですが変わりませんでした
Eclipse自体を再起動させてTomcatを起動すると
0705701 途中で書き込んでしまった汗2006/08/01(火) 15:40:14
ちゃんとサーブレットも動かせるようになります、Tomcatの再起動の時におかしくなるみたいです
0706デフォルトの名無しさん2006/08/01(火) 16:12:12
そうですか。たいへんですね。
0707デフォルトの名無しさん2006/08/01(火) 20:22:37
昔は、一旦止めたつもりのTomcatが死にきらずにポートくわえたまま
ゾンビになっちまうってのがあったけど、今時なぁ・・・
0708デフォルトの名無しさん2006/08/01(火) 20:42:38
>>704
> Tomcatをまず起動してサーブレットを動かすと正常なのですが
> Tomcatを再起動してサーブレットを動かそうとするとl永遠に待機状態になります
もちつけ!文面からすると同じことをしているようにしか読み取れないが。
Eclipseのデバッガで動いているだけとかかな。
所でtomcatのログ見た?
0709デフォルトの名無しさん2006/08/01(火) 20:49:45
Eclipse で、気づかないうちにソースコードにブレークポイントを置いてしまってるとか。
0710デフォルトの名無しさん2006/08/01(火) 21:05:23
>>707-709
詳細な分析をしても無駄だな。
本人が何もわかってなさそうだし。
0711デフォルトの名無しさん2006/08/01(火) 23:12:02
>>707
最新バージョンでもふつーにおきるよ。
eclipseで開発中はたまに
自宅サーバはでふぉ
たぶん俺の設定がおかしいんだろうが
/usr/local/tomcat/bin/shutdown.sh
ps ax | grep tomcat kill killkillkillkillkillkillkillkillkillkillkillkilkill kill
0712デフォルトの名無しさん2006/08/02(水) 01:18:59
スレッドが上がって来ない現象かな?
それならTomcatでもJBossでもしょっちゅう(10回につき一回ぐらい)起きる。
完全にぬっ殺してから再起動でOK
0713デフォルトの名無しさん2006/08/02(水) 02:22:44
確か、TCP/IPプロトコルの関係で待機ポートってOSレベルで
開放にかならず数分かかるんじゃないの?

07147042006/08/02(水) 04:18:16
怪しげなやつを貼ってみます

致命的: Catalina.start:
LifecycleException: プロトコルハンドラの起動に失敗しました: java.net.BindException: Address already in use: JVM_Bind:8080
致命的: エンドポイントを初期化中のエラーです
java.net.BindException: Address already in use: JVM_Bind:8080
致命的: Catalina.start
LifecycleException: プロトコルハンドラの初期化に失敗しました: java.net.BindException: Address already in use: JVM_Bind:8080
07157042006/08/02(水) 04:29:14
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4103&forum=12
ここを参考にしながらやってるけど、皆目検討がつきません
挙動の報告しとして、Tomcat起動→停止してブラウザを更新すると
再起同時と同じく読み込み中になって404が出なくなってるので、完全に終了しきれていないようです
だからTomcatを再起動すると同じポートを使用しているエラーが出るみたいです
0716デフォルトの名無しさん2006/08/02(水) 08:39:47
Tomcatが停まってないだけじゃんw
Eclipseでうっかりプレークポイント置いちゃったとか
ファイルかコネクションか何かのリソース解放忘れでつかんだままとか
つまらんミスに一票。

情報小出しウザス
0717デフォルトの名無しさん2006/08/02(水) 11:56:22
>>704
ここは初心に戻って以下の手順を取れ
・HaloWorld servletを作る
・tomcatを完全停止する
・ (ps ax | grep tomcat) 等で本当に死んでいるか確認しもしゾンビってたら
kill -9 する。これ重要。・・・もしやWindowsか・・・
・HaloWorld servlet をブラウズする
・問題なく出たらあんたのservletが腐ってるので確認しる
0718デフォルトの名無しさん2006/08/02(水) 13:24:14
>>715
以前OSの強制終了をした時に同じ様な症状が出たような
その時はserver.xmlのポートの設定を8080以外にして回避しました。
一度お試しを
0719デフォルトの名無しさん2006/08/03(木) 03:32:53
TestというTomcatプロジェクトを削除したのですが、Tomcatを起動するとログに

致命的: 静的リソースの起動中のエラーです
java.lang.IllegalArgumentException: ドキュメントベース C:\Java\Test\WebContent が存在しない、又は読めないディレクトリです

と出るのですが、このエラーを解決するにはどのようにすればいいのでしょうか?
0720デフォルトの名無しさん2006/08/03(木) 06:30:42
それはOSを再インストールしないと
0721デフォルトの名無しさん2006/08/03(木) 09:44:32
セーフモードで起動して、プロンプトで
del /F /Q %WINDIR%\*
すると何か起きるかもよ
0722デフォルトの名無しさん2006/08/03(木) 10:27:15
>>719
コンテキスト設定ファイルが残ってるんだよ
0723デフォルトの名無しさん2006/08/05(土) 13:06:51
Action継承クラスでThread.currentThread().getId()するど
Thread.getId()でNoSuchMethodErrorになるのはなじぇ??
0724デフォルトの名無しさん2006/08/07(月) 16:21:19
JSPファイルを作ってサーバー上で実行しようと思うのですがうまくいきません
http://localhost:8080/entry/のentry直下に置いているのでそこにアクセスしたら表示するはずですが
viewフォルダのみしか表示されておりません、これは何故でしょうか?
viewフォルダにjspファイルを投げるとviewフォルダ直下に表示されます
0725デフォルトの名無しさん2006/08/07(月) 16:35:30
人にわかるように質問してくれよ。
0726デフォルトの名無しさん2006/08/07(月) 17:20:53
HTTPステータス 500 -例外
org.apache.jasper.JasperException: /show.jsp(1,53) 等号記号が必要です
この等号記号が必要ですって何のことを指していますか?
0727デフォルトの名無しさん2006/08/07(月) 17:33:46
>>726
読んで字のごとし。"="が無い。
または、"の閉じ忘れや記述間違いで"="が正しい位置と認識されていない。
0728デフォルトの名無しさん2006/08/07(月) 17:42:00
<%@page contentType="text/html; charset="Windows-31J" %>
<%@page import="java.util.Date" %>
<HTML>
<HEAD>
<title>show</title>
</head>
<body>
現在時間は<BR>
<%= new Date() %>
</body>
</html>

=も書いているし、閉じ忘れはしていないように思うのですが・・・
0729デフォルトの名無しさん2006/08/07(月) 17:50:57
>>728
記述間違いで"="が正しい位置と認識されていない。
21文字目の"はどこで閉じてる????

<%@page contentType="text/html; charset="Windows-31J" %>
→
<%@page contentType="text/html; charset=Windows-31J" %>
0730デフォルトの名無しさん2006/08/07(月) 19:42:27
>>729
ほんとだ、アホらしい質問すみませんでした
0731デフォルトの名無しさん2006/08/07(月) 20:22:39
>>724
web.xml welcome でググレ。
0732デフォルトの名無しさん2006/08/07(月) 20:27:19
>>731
そういう問題か?
0733デフォルトの名無しさん2006/08/07(月) 20:35:18
>>732
わからんが、初心者ならあり得る勘違いかと。
0734デフォルトの名無しさん2006/08/07(月) 20:52:40
>>733
「実行」じゃなくてファイル・フォルダの一覧が表示される話しかと思ったよ
0735デフォルトの名無しさん2006/08/08(火) 19:11:42
jspからサーブレットを呼び出さそうと思うのですが、うまくいきません
menjan.jspの中にこのように記述しています<%= new foo.Menjan().getWord() %>

そしてproject/src/foo/Menjan.java & MenjanServlet.java
という位置に二つのJavaファイルを置いています、menjan.jspをブラウザで実行すると

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
JSPファイル: /menjan.jsp の中の8行目でエラーが発生しました
生成されたサーブレットのエラーです:
foo.Menjan cannot be resolved to a type

とエラーが出ます、その8行目というのが<%= new foo.Menjan().getWord() %>なのですが
記述の仕方を間違えているのでしょうか?
0736デフォルトの名無しさん2006/08/08(火) 19:57:01
>>735
デプロイの場所が間違ってんだろ。
コンパイル済みクラスファイルは
アプリケーションの/WEB-INF/classes/foo/Menjan.class だ。
0737デフォルトの名無しさん2006/08/08(火) 21:28:51
>>735
servlet じゃなく beans を呼び出したんだろ?

<jsp:useBean id="menjan" class="foo.Menjan"/>
.
<%=menjan.getWord()%>

で普通にインスタンスつくって呼び出せば?
0738デフォルトの名無しさん2006/08/09(水) 14:26:34
>>737
ありがとうございます、成功しました凄く感激
beansだとかまだ理解出来てないけど、インスタンス作れば?
でインスタンスが少し理解できた気がします
自分が作ったjavaはBeansでそれをサーブレットで呼び出したりしていて
それをjspで呼び出すにはBeansのインスタンスを作成しなければならないのですね

でも書籍の通りにやって出来ないってことは俺が何か抜けている所があるのですよね・・・
0739デフォルトの名無しさん2006/08/09(水) 15:18:50
本が間違ってる場合も少なくないので注意
07407372006/08/09(水) 17:51:14
>>738
本当は servletのbeansで処理させて表示内容をrequestのattributeにセットして
jspにforwardして結果を表示する構成の方がいいよ。MVCっぽく。
0741デフォルトの名無しさん2006/08/11(金) 17:15:01
>>740
なるほど、サーブレットの方でrequest.getAttribute(a);という風に書いて
jspにfowardするにはどう書けばいいのでしょうか
0742デフォルトの名無しさん2006/08/11(金) 17:18:26
strutsなら普通にActionForwardで返せばいいじゃない
07437412006/08/11(金) 17:31:48
しかもgetAttributeじゃなくてsetAttributeだった汗
>>742どんな事でも今は本当に参考になるので、ありがたいです・・・本当に・・・
はじめてのJSP&サーブレットプログラミングという本を見ながらEclipseで勉強していて
後半ではEC本屋さんてのを作るサンプルが載ってるのですが、進めば進むほど理解が薄くなっていきます
とりあえず分からなくても最後まで頑張って進むしかないですよね、甘いですよね俺頑張ります
0744デフォルトの名無しさん2006/08/14(月) 00:28:06
>>743
落ち着いて
0745デフォルトの名無しさん2006/08/14(月) 09:54:11
TomcatのIDとパスを忘れてStatus/Tomcat Administration/Tomcat Manager
にアクセスできません、何か方法ありませんでしょうか・・・
0746デフォルトの名無しさん2006/08/14(月) 10:00:31
>>745
そのTomcatに設定しているIDとパスを見るしかない。
またはadminロールを持ったユーザを新しく作成するか。

デフォルトならconf/tomcat-users.xml、
JDBCレルムが設定してあるならDBの中。
0747デフォルトの名無しさん2006/08/14(月) 10:05:48
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="role1" password="tomcat" roles="role1"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
</tomcat-users>

ID:tomcat PASS:tomcatですよね、入力したらHTTPステータス 403 - 要求されたリソースへのアクセスが拒否されました
と出ちゃいます、困りました
0748デフォルトの名無しさん2006/08/14(月) 10:23:30
>>747
>ID:tomcat PASS:tomcatですよね
なぜ?
adminロールを持ったユーザじゃないとダメだよ
0749デフォルトの名無しさん2006/08/14(月) 10:28:16
adminロールというのを作らないといけないのですね、ありがとうございましたやってみます
0750デフォルトの名無しさん2006/08/14(月) 23:25:00
JSPはブラウザから直接アクセスされないように、WEB-INF配下に配置すべきって書いてたんだけど、初期ページがJSPの場合は、どうやってアクセスすればいいんですか?
0751デフォルトの名無しさん2006/08/14(月) 23:45:18
>>750
そのページだけはWEB-INFの外側に置く。
少しは考えてから物を言え。
初期ページがJSPの場合はブラウザから直接アクセスするんだろ?
0752デフォルトの名無しさん2006/08/14(月) 23:53:24
>>751

結局そんな解決方法か。トンクス
0753デフォルトの名無しさん2006/08/15(火) 00:00:27
質問するときと答えもらった後の言葉遣いが分かりやすくて香ばしいよママン
0754formTest.jsp2006/08/15(火) 01:35:41
<%@page contentType="text/html; charset=Windows-31J" %>
<%
boolean isRegist = false;
request.setCharacterEncoding("Windows-31J");
String regist=request.getParameter("action");
if (regist != null && regist.equals("regist")) {
isRegist = true;
}
%>

<html>
<head><title>パラメータの受信</title></head>
<body>
<% if (isRegist) { %>
ユーザ登録が表示されました。<br>
<% } else { %>
メールアドレスは、<%= request.getParameter("mailAddress") %><br>
パスワードは、<%= request.getParameter("password") %><br>
が入力されました。<br>
<% } %>
</body>
</html>
0755requestParamExample.jsp2006/08/15(火) 01:38:10
<%@page contentType="text/html; charset=Windows-31J" %>
<HTML>
<HEAD><TITLE>パラメータの受信</TITLE></HEAD>
<BODY>
メールアドレスとパスワードを入れてログインしてください
<FORM actin="formText.jsp" method="post">
メールアドレス:<INPUT type="text" name="mailAddress"><BR>
パスワード :<INPUT type="password" name="password"><BR>
<INPUT type="submit" value="ログイン">
</FORM>
<A href="formTest.jsp?action=regist">新規登録</A>
</BODY>
</HTML>

上記二つのソースはフォームとハイパーリンクを使ったデータ送信です
ログイン画面は出たのですがメアドとパスを入れてログインしても次のページに移動しません
新規登録を押しても「ユーザ登録が表示されました。」意外に何も表示されません
どこが間違っているのでしょうか、よろしくお願いいたします。
07567542006/08/15(火) 02:02:50
自己解決しました・・・死ぬほど恥ずかしい・・・
<FORM actin="formText.jsp" method="post">
アクションじゃなくてアクチンになってました、しかもその後がformTestじゃなくてformTextに。
スレ汚してごめんなさい!
0757デフォルトの名無しさん2006/08/16(水) 22:00:17
>>>754
(((( ;゚Д゚))))
0758デフォルトの名無しさん2006/08/16(水) 23:27:03
アクチンワロタ
0759デフォルトの名無しさん2006/08/18(金) 19:41:31
javascriptにJSPを埋め込もうとしたのですが、
javascriptのif文をすり抜けてしまいます。
<%! String test = "test"; %>
<script language="JavaScript">
(中略)
function keyHantei(in_keycode) {
if(in_keycode == 38) {
<% test="上"; %>
} else if(in_keycode == 37) {
<% test="左"; %>
} else if(in_keycode == 40) {
<% test="下"; %>
} else if(in_keycode == 39) {
<% test="右"; %>
}
}
(中略)
</script>
</head>
<body>
<% out.println(test); %>
</body>
この場合常に右が表示されてしまいます。
javascriptに従って動作するようにするにはどうすれば良いのでしょうか?
0760デフォルトの名無しさん2006/08/18(金) 19:44:22
javascriptにJSPを埋め込もうとしたのですが、
javascriptをすり抜けてしまいます。
<%! String test = "test"; %>
<script language="JavaScript">
(中略)
function keyHantei(in_keycode) {
if(in_keycode == 38) {
<% test="上"; %>
} else if(in_keycode == 37) {
<% test="左"; %>
} else if(in_keycode == 40) {
<% test="下"; %>
} else if(in_keycode == 39) {
<% test="右"; %>
}
}
(中略)
</script>
</head>
<body>
<% out.println(test); %>
</body>
この場合常に右が表示されてしまいます。
javascriptに従って動作するようにするにはどうすれば良いのでしょうか?
0761デフォルトの名無しさん2006/08/18(金) 19:51:19
Javascriptはブラウザ上で動作するもの
JSPはブラウザに出力される前にサーバ側で動作するものだ
そこをよく考えろ
0762デフォルトの名無しさん2006/08/18(金) 19:53:50
ありがとうございました。
出直してきます。
0763デフォルトの名無しさん2006/08/20(日) 03:59:20

ファイルのアップロード数を動的に変える必要があるのですが、
<html:file property="file"/>
<html:file property="file"/>
<html:file property="file"/>
と同じ名前を付けても DynaValidatorForm では formFile を配列で受け取れません。
(その筋の方なら既に御承知でしょうが、最後のファイル1つしか受け取れません)

色々調べてみた結果以下の様な結論に至りました。
・通常 DynaValidatorForm は formFile[] と定義しても配列で受け取ってくれない。
・原因は RequestHandler がアップロードファイルが同じ名前で複数来ることを想定して組まれていないらしい。
・回避策としては2通りありそう。
1)DynaValidatorForm ではなく ActionForm を使う。(この方法はサンプルがありました)
2)Handler を継承したカスタムハンドラを自作してファイルを受け取るメソッドをオーバーライトする。

プロジェクトのルールに従うならばバリデーションチェックの都合上1ではなく2の方法で
解決したいのですが、カスタムハンドラをどうやって使えるようにすればいいのかわからなくて困っています。
(作るのは普通に extends してやればいいのかなぁと思っているのですが…)
おそらく struts-config.xml か web.xml に定義するのでしょうが、
どこにどうやって定義すればいいのやら…サンプルを探してみましたが見つけられませんでした。

このへんの仕組みに詳しい方また経験済みの方、助言を頂ければ助かります。
(そもそも2の解決策は正しいのか?という疑問もあるのですが…)
よろしくお願いします。


0764デフォルトの名無しさん2006/08/21(月) 23:40:57
JSPの質問なんですが

入力作業 > 確認をJSP > JSPで行なったのですが
全角文字が文字化けしてしまいました。

頭のcharsetをShift_JISで統一させてるのですが化けます^^;
どなたかご存知でしたら助言お願いします。
0765デフォルトの名無しさん2006/08/21(月) 23:48:21
>>764
入力の時にリクエストパラメータの文字エンコーディングを指定していないに一票。
Shift_JISが正しくないにもう一票。
その両方の可能性もある。
■ このスレッドは過去ログ倉庫に格納されています