質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

5355閲覧

PHPとjspの連携について

kumakumatan

総合スコア213

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2016/07/25 06:29

下記のような「send.php」から「message.jsp」に変数の値を引数などで渡して、
「message.jsp」にて渡した変数値を表示させたいと思います。
そのようにするには「send.php」側をどう修正させればいいでしょうか?
headerで渡す方法でいいのか、それとも別の方法があるのかご教授いただきたく
お願い致します。また、今回みたいに複数の変数をPHP側からjsp側に引き渡す際は
どうすればいいのかご教授いただきたくお願い致します。
また、phpとjspを連携させる際はサーバ側に何か設定が必要なのかをご教授いただき
たくお願い申し上げます。

php

1(send.php) 234$COMPANY = $_POST['kaisya']; 5$JIGMEK = $_POST['jigmek']; 6$TANMEK = $_POST['tanmek']; 7$MYFILE = $_POST['my-upfile']; 8910header("Location:message.jsp?FILENAME=$MYFILE"); 11exit(); 1213

jsp

1(message.jsp) 2 3<% 4 //フォームからの情報受け取り 5 request.setCharacterEncoding("utf-8"); 6 7 String file = request.getParameter("FILENAME"); 8 String jig = request.getParameter("JIGMEK"); 9 String tanmei = request.getParameter("TANMEK"); 10 String company = request.getParameter("COMPANY"); 11 12 out.println("ファイル名:【" + file + "】"); 13 out.println("建物名:【" + jig + "】"); 14 out.println("担当者:【" + tanmei + "】"); 15 out.println("会社名:【" + company + "】"); 16 17%> 18 19<html><body> 20 21</body></html> 22

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

Windowsに入れたデフォルトのTomcat(自分の場合Tomcat7.0)ではどうやら内部処理がISO-8859-1
らしいです。なのでJSP(Java)側を「ISO-8859-1で渡されました」ってJavaに教える必要があるみたいです。(Linuxは別みたいです。)

String ans = request.getParameter("filename");

String ans = new String (request.getParameter("filename").getBytes("ISO-8859-1"));

ありがとうございました。

投稿2016/07/26 23:56

kumakumatan

総合スコア213

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

php側でjspへパラメータを渡す際、getパラメータとして渡せばよいかと思います。
php側でjspへリダイレクトさせる方法は記載されているheaderを利用する方法で良いかと思います。

php

1header("Location:message.jsp?FILENAME=$MYFILE&JIGMEK=$JIGMEK&TANMEK=$TANMEK&COMPANY=$COMPANY"); 2exit();

Locationで指定しているmessage.jspは、きちんとアクセスできるURLで記載するようにしておいてください。


以下追加質問への回答です。

確認及び調査ありがとうございます。
文字化けは様々な場所で起こりうる現象で、記載いただいたように一箇所ずつ詰めて切り分けしないと原因究明が難しい問題です。大体はIN/OUTの受け渡しの際に発生します。

今回のケースですとおっしゃる通り、以下の部分が怪しいですかね。

  • ブラウザからJSPへの受け渡し(リダイレクト時)
  • JSPからブラウザへの受け渡し

**「ブラウザからJSPへの受け渡し」**部分の確認のためには、JSP側でデバッグするのが一番簡単に確認できます。
System.out.println()を使ってパラメータをコンソール出力するとどうなりますか?

**「JSPからブラウザへの受け渡し」**の部分はさらに何種類か原因が考えられます。

  • JSPではShift-JISで出力しているが、ブラウザがUTF8などでエンコードしてしまう
    -> ブラウザのエンコードをShift-JISにすると改善する
  • JSPではShift-JISで出力しているが、対象の部分だけUTF8で出力してしまっている
    -> JSPで適切にShift-JISに変換が必要
  • JSPではUTF8で出力しており、対象の部分だけShift-JISで出力してしまっている
    -> JSPの出力をShift-JISとする
  • JSPではUTF8で出力しており、対象の部分もUTF8で出力しているがブラウザがShift-JISでエンコードしてしまう
    -> JSPで適切にShift-JISに変換し、JSPの出力をShift-JISとする

ブラウザのエンコードがどうなっているか、という点とHTTPヘッダの「Content-Type」がどうなっているか確認できますか?


また別の切り分けとして、JSPに固定で日本語を記載しておき(<p>タグでもなんでも良い)、固定文字も文字化けするか、固定文字だけは文字化けしないか確認する事で、パラメータ固有の文字化けであるか切り分けもできます。
この場合はパラメータをJSP内で適切にエンコードする必要があります。


話が複雑になってしまうかもしれませんが、phpでのリダイレクト指定の際、パラメータの文字列を文字コードを考慮したパーセントエンコーディングをすることで回避できるかもしれません。余談程度に。

投稿2016/07/25 07:53

編集2016/07/26 03:15
takyafumin

総合スコア2335

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakumatan

2016/07/25 23:57

ご回答ありがとございます。 jsp側で受け取れるようになったのですが、表示すると、「?e?X?g?K??_?g??????.csv」のように表示されてしまいます。phpとjsp側もお互い文字コードはshift-jisにしております。 宜しくお願い致します。
takyafumin

2016/07/26 00:59

初めの問題が解決したようでよかったです。 文字化けについてですが、発生する仕組みついては調べてみましたでしょうか? 上記コメントだけだと、teratailが推奨していない「丸投げの質問」のように読み取れてしまいますよ。まずは自分で色々と調べてみましょう。 ・phpとjsp側の文字コードとはファイルの文字コードなのか ・サーバ(apacheやtomcat)のエンコーディングの指定は何なっているのか ・文字化け時のブラウザのエンコードはどのようになっているのか ・httpヘッダではどうなっているのか など調査してみてください。
kumakumatan

2016/07/26 02:57

ご回答ありがとうございます。 ・phpとjsp側の文字コードはお互い、「charset=shift-jis」です。 ・サーバ(apacheやtomcat)のエンコーディングの指定はお互い「utf-8」です。 ・文字化け時のブラウザのエンコードは「日本語shift-jis」です。 ・httpヘッダ部分は文字化けしていません。 jsp側のブラウザではその他の文字は文字化けしないで表示されます。 jsp側で、フォームからの情報受け取りをして変数を表示するところで文字化けが発生しているように見受けられます。 request.setCharacterEncoding("utf-8");またはrequest.setCharacterEncoding("shift-jis");にしても変わりません。 おそらく、jsp側で受け取る時に文字化けがしてそうな気がします。 ご教授いただければ幸いです。 宜しくお願いします。
takyafumin

2016/07/26 02:59

ご確認ありがとうございます。 長くなりそうなので、回答欄に追記します。
kumakumatan

2016/07/26 04:17

ご回答ありがとうございます。 phpの開発環境ではeclipsを利用していないので、「System.out.println()」で検証できません。。文字コードはすべて「utf-8」にしています。 固定文字だけは文字化けはしないです。パラメータ固有の文字化けであるかと思います。 パラメータをJSP内で適切にエンコードするにはどうしたらいいでしょうか? 宜しくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問