JSPとJavaScriptの連携について教えて下さい

このQ&Aのポイント
  • JSPとJavaScriptの連携について教えて下さい
  • JSPのメイン画面でテキストボックス欄に名前を入力し、登録ボタンを押すと、JavaBeansを利用して入力された名前欄のテキストボックスが空白かどうかをチェックし、空白でなければ別のJavaBeansを呼び出し、データベースへの登録処理を行い、空白の場合はエラーメッセージを表示する方法を教えてください
  • JSPとJavaScriptの連携において、JavaScript内でJavaBeansを呼び出す方法について教えてください
回答を見る
  • ベストアンサー

JSPとJavaScriptの連携について教えて下さい

JSPとJavaScriptの連携について教えて下さい 当方、現在システム開発会社入社新人で、JavaやJSP、TomcatやOracleなどを使用してシステム開発をしている者です。 【用意されているデータ】 ・メイン画面:A.jsp ・空白確認用JavaBeans:Blank.java ・登録処理用JavaBeans:Regist.java 【やりたいこと】 JSPのメイン画面(A.jsp)で、テキストボックス欄に名前を入力し、登録ボタンを押します。 データベースへ登録を行うのですが、その前にJavaBeans(Blank.java)を利用して入力された名前欄のテキストボックスが空白(=未入力)かどうかをチェックさせ、OKなら新たに登録用の(Regist.java)を呼び出しますが、もし未入力の場合は「入力して下さい」旨のメッセージボックスを表示し処理を中断させます。 【教えてほしい問題点】 ボタンを押したらJavaScriptへ入り、そこでBlank.javaを呼び出し、さらにIF条件を用いて空白/登録を分けようとしています。普通にJSP内ではできました。しかしその命令文をそのままJavaScriptの中に入れると全く機能しなくなってしまいます。このサイトの類似質問を拝見し、『JSPはサーバ、JavaScriptはクライアントサイドで動くものであり、そもそもが違うのでそのままでは使えず、JavaScript用に加工して使う必要がある』という所まで突き止めました。しかし、『じゃぁ実際どうすれば良いの?』という所がわかりません。 以下にコードを記します。ご回答頂ける方がいましたら、ぜひご教授下さい。 なお、本来は初期表示時点の判定があったりともう少し複雑なコードですが、とりあえず今回の問題を解決できると思われる部分のみ記述しました。タグの位置やスペルミスなどがもしかしたらあるかもしれませんが、元はコンパイルが通るものなので、その点はご了承下さい。 【コード】 ◇◆A.jsp◆◇ <%@page import = 省略> <jsp:useBean id='Check' scope='session' class='パッケージ.Blank'> <jsp:useBean id='R' scope='session' class='パッケージ.Regist'> <html> <head> <title>登録</title> // JavaScript(自力でできる途中まで記述しました) <script lauguage="JavaScript"> <!-- function check(){ var a = document.form_A.NAME.value; ■■■■■■■■■■■■■■■■■■■■■ ■この中身がわかりません■ ■■■■■■■■■■■■■■■■■■■■■ if(Check.Blank() == false){ alert('空欄です。入力して下さい'); }else{ R.Regist(); } } --> </script> </head> <body> // 入力欄nameの情報をパラメータとしてNAMEでsetする Check.setNAME(request.getParameter("name")); // 入力欄作成 <form name="form_A"> <INPUT type="text" name="NAME"> // ボタン作成 <INPUT type="submit" value="登録ボタン" onClick="check();"> </form> <body> </html> ◇◆Blank.java◆◇ public class BlankBean{ // メンバ変数 private String NAME;  // コンストラクタ public BlankBean(){ NAME = null; } // 空白チェック(未入力はfalseを、OKの場合はtrueを返す)  public boolean Blank(){ if(NAME == null){ return false; } return true; } // setによるアクセスメソッド public void setNAME(String i){ NAME == i; } よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

無理にjavascriptでJAVAの部品を使ってチェックしようとするから、 ややこしくなって誤解するのです。javascriptは無くてもよいです。 処理は全部サーバー側でやりましょう。 HTMLで <form action="A.jsp" method="post or get"> <INPUT type="text" name="NAME"> <INPUT type="submit" value="登録ボタン"> </form> となっていれば、自分自身「A.jsp」にNAMEが送信されますから、 これをjspで、Blank.javaを使ってチェックし、OKならば、 Regist.javaで登録処理し、だめなら、エラーページもしくは 自分自身をそのまま出力(不親切)しとけばよい。

その他の回答 (3)

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

サーバサイドJavaScriptは確かにありますが、一般的にJavaScriptはクライアントサイドで動作するものであり、質問者さんの書いているコードはクライアントサイドJavaScriptだと思います。 node.js http://nodejs.org/ http://nodejs.jp/nodejs.org_ja/ node.js を試してみた - ursmの日記 http://d.hatena.ne.jp/ursm/20100925/1285359068 > ボタンを押したらJavaScriptへ入り、そこでBlank.javaを呼び出し ここがよくわかりません。 クライアントサイドで動作するJavaScriptからサーバサイドの Blank.java は呼び出せないんじゃないでしょうか? 流れとしては「サーバサイド → クライアントサイド」になるわけで逆に動作させるって事はもう一度HTTPリクエストを発行しなければなりません。(XMLHttpRequest とか JSON とか) JavaScriptはJavaを解釈できませんので、JavaScriptコードを出力するか、XMLなどの整形フォーマットから必要なパラメータを解析する必要があります。

noname#118451
noname#118451
回答No.2

JavaScriptとjavaは名前は似てますが、まったく別の言語です。 基本から勉強しなおしてください。 >JavaScriptはクライアントサイドで動くものであり これだってそもそも間違いです。 サーバーサイドでも動かせます。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>しかし、『じゃぁ実際どうすれば良いの?』という所がわかりません。 基本が判ってないようです。良い書籍かサイトを探して勉強しましょう。

関連するQ&A

  • jsp から servlet に

    パラメータをJSPからServlet に渡す所で、どうしても、null になってしまします‥。 主要な部分だけ書きます。 --jsp-- <jsp:useBean id="beanId" class="Bean" scope="request" /> <form method="POST" action="servlet"> <input type="submit" value="送信"> <input type="text" size="10" name="name"> --servlet-- import Bean; Bean bean = (Bean)request.getAttribute( "beanId" ); // ↑ここが、nullになってしまう。 --Bean-- public String getName() { return name; } public void setName( String name ) { this.name = name; } 考え方が違ってるかも知れないのですが‥。 よろしくお願いします。

    • ベストアンサー
    • Java
  • jspからjavascriptの変数引継ぎ

    jspでデータベースからデータを取ってきて格納した配列をjavascriptでも同じように変数として扱いたいのですがどうすればいいでしょうか? javascriptによってオンマウス時に枠がポップアップし、javascript内で設定した文字を枠内に表示しようとしているため、jspからデータを引き継ぎたいのです。 jspではtitleとhonbunは配列で <form name="form_title"> <input type="hidden" name=title value="<%= title %>" > </form> <form name="form_honbun"> <input type="hidden" name=honbun value="<%= honbun %>" > </form> このように名前をつけ、javascriptでは var taitoru[]= document.form_title.title.value; var honbun[]= document.form_honbun.honbun.value; このように変数に代入しています jsp側ではSPANでオンマウス時にjavascriptを呼び出し、javascriptでは文字が配列のhonbun[0]等をポップアップした枠の中で表示させるようにさせたいのですが 枠そのものがポップアップしません 上記のjavascriptでの変数への代入部分をコメントアウトすると、枠自体は表示されます 配列を丸ごとjavascriptで配列に代入できないのであれば、1データずつ引き継ぐという方法でもいいのですが、どのようにjavascript側で代入すればいいのでしょうか?

  • jspから別のjspへパラメータが送信できない

    javaBeanを利用してjspを作成したけど Test.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <jsp:setProperty name="formprocess" property="*"/> <html> <head> <title>TEST</title> </head> <h2>情報の入力</h2> <form method="GET" action="/javaroad/jspdir/Test_1.jsp"> <p> 名前: <input type="text" name="name" size=30> <p> メールアドレス: <input type="text" name="mailaddress" size=30> <p> <input type="submit" value="送信"> </form> </center> </body> </html> Test_1.jspのソース <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="struts.*" %> <jsp:useBean id="formprocess" class= "struts.FormProcess" scope="application" /> <html> <head> <title>TEST</title> </head> <body> <p> 名前: <jsp:getProperty name="formprocess" property="name"/> <p> メールアドレス: <jsp:getProperty name="formprocess" property="mailaddress"/> </body> </html> Beanのソース package struts; public class FormProcess { String name; String mailaddress; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setMailaddress(String mailaddress) { this.mailaddress = mailaddress; } public String getMailaddress() { return mailaddress; } } Test.jspでデータを入力して送信ボタンを押すとTest_1.jspではnullが表示します。前の入力したデータではないです。どうしたらできますか?

    • ベストアンサー
    • Java
  • JAVASCRIPTでINPUT

    HTMLとJAVASCRIPTとJSPを使ってシステム構築をしております。 --------------- <html> <head> <SCRIPT Language="JavaScript"> <!-- function send() { alert("<input type=text name=name2>"); } // --> </SCRIPT> </head> <body> <form onSubmit="send(); return false;"> <input type=text name=name1> <input type=submit> </form> </body> </html> --------------- 上記のコードでやりたいことは、 submitボタンが押されたときにJAVASCRIPTを呼び出し JAVASCRIPT上で文字を入力し次画面へ送信するような機能を作りたいと思っているのですが、本を見てもなかなか載っていません。 もしかしたらJAVASCRIPTだけではできないかもしれません。 JSPまたはPHPで出来る機能でも良いので教えてください。

  • JSPが表示されません

    Apache2+Tomcat4.1+j2sdk1.4.2_06+EclipseでJSPとサーブレットのページを作ろうとしています。 HTMLファイルのフォームの内容をJSPファイルに送り、ServletでDBと参照、登録という流れを作ろうとしています。 aaa.html(ユーザーがデータを入力) ↓(1)フォームの内容を転送 bbb.jsp((2)htmlからの入力をccc.classに中継、(7)返り値を表示) ↓(3)メソッド呼び出し ↑(6)返り値を返す ccc.class(重複の有無確認やDBへの登録メソッド) ↓(4)SQL ↑(5)結果 DB(PostgresSQL) 本に書いてあるのを真似たらlocalhost上ではちゃんと動くようになりました。 つまり、下記のようにaaa.htmlからの転送先をlocalhost:8080/bbb.jspに指定するとうまく作動します。 <form name="form1" method="post" action="http://localhost:8080/bbb.jsp"> しかしながらこれではローカルでしか使えないので転送先を相対パスで指定したらうまくいきません。 <form name="form1" method="post" action="../bbb.jsp"> 外部から参照できるURL(サーバのIPアドレス)でもダメです。 <form name="form1" method="post" action="http://***.***.**.**/bbb.jsp"> 症状としては.jspファイルの最初のHTMLの記述はちゃんと動いているようで画面の色等はちゃんと変わります。 <%.....%>で囲まれたJAVAの記述がまったく作動しません。 /work/org/apache/jspに発生する中間ファイルもlocalhostのときには出来るのですが相対パスにすると出来ません。 どうしたらいいのでしょうか? ひょっとしたらとても初歩的なことかもしれませんがご存知の方がいらっしゃいましたらご教授願いたいと思います。

    • ベストアンサー
    • Java
  • phpのエラーチェックについて質問です!

    phpのエラーチェックについて質問です! エラーチェックについてです><; if(isset($_POST['name'])){ $name = htmlspecialchars($_POST['name']); if (empty($name)) { $message = '未入力があります'; と記入してエラーメッセージを表示したい場所に記載してます。 しかし、フォームで <form action="regist2.php" name="form" method="post"> でsubmit押すとフォームが空白でもactionでregist2.phpに送られてしまいます><; エラーがなければ、そのままsubmitでaction=regist2.phpに送りたいと考えております。 なにか解決方法はないでしょうか? ご教授お願いします!!!!!!!!

    • 締切済み
    • PHP
  • jspからServletにデータを送るには?

    javaを使って開発をしているのですが、 jspからServletにデータを送るのってform型のsubmitでしかできないですか? <a href="~">で行うことは無理でしょうか? ちなみに、form型だと以下のようにしています <form method="post" action ="hogeServlet" > <input type="hidden" name="id" value =<%=hoge.getid() %>> <input type="submit" id="button1" value="ほげ"> </form>

  • jspとservlet、sqlの連携でformのsubmitが押せない

    いつもお世話になっております。 Java1.5 MySQL5を使用しています。 Javaの勉強でjspとservletを使ってデータベースにレコードを追加・変更・削除する処理を行っております。 追加処理は問題なく動くのですが、レコードが30件以上あった場合のみ変更画面が動作しません。 チェックボックスにチェックを入れたもののみ変更する、というプログラムなのですが、30件以上のレコードから選択すると<input type="submit" …>が押しても何も動作をしません。 レコードはfor文でまわして、<input type="text" name="name" …>というように配列として渡しています。 同じような構造で書いている削除処理は30件以上で問題なく動くので変更処理プログラム内の問題かとも思ったのですが、レコードを渡すformの中で<input type…>を1つ減らせば(現在は3つのカラムを渡しています)submitが押せることに気付きました。 調べてもなかなか出てこないので、質問させて頂きます。 ご指導お願いいたします。

    • ベストアンサー
    • Java
  • jspでjavascript関数へ引数を渡す方法

    最近Webアプリの勉強をし始めたばかりの初心者です。 今、jspでjavascript関数へ引数を渡す方法がうまくいかず困っています。 以下はjspファイルの該当部分の抜粋です。 やりたいこととしては、画面上で参照ボタンを押したときに、"reference"という文字列を 一度javascript関数を介してサーブレットへ渡すということです。 <head> <script type="text/javascript"> <!-- function func(param){ alert(); document.getElementById("param").name = param; } // --> </script> </head> <form action="/tomcat_test/servlet/hello" method="POST"> <input type="hidden" name="param" id="param"> <input type="button" value="参照" onclick=<%= "func('reference')" %>/> </form> いろいろ調べてみたのですが、なかなかうまくいかずに困っています。 そもそも、参照ボタンを押してもonclickがうまく動いていないようで、 まずその問題を解決したいです。 onclickタグの使い方を間違っているのでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • Firefox:JavaScriptのsubmit

    JavaScriptで、以下のようにsubmitしていますが、 IEではOKで、Firefoxでは「送信開始」ボタンで反応がありません。 Firefoxではどのように書けばよいのでしょうか? 以下は、テストのため省略できるギリギリまで省略していますので、意味のないスクリプトになってますが、実際にはJavaScriptで空白個所のチェックのロジックを入れています。 <html> <head> <script language="JavaScript"> <!-- function check1(){ document.FORM1.submit(); } ---> </script> </head> <form action='http://hogehoge.jp' method='post' name="FORM1"> <input type='button' value='送信開始' onClick="check1()"> </form> </body> </html>

専門家に質問してみよう