プロが教えるわが家の防犯対策術!

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;
}

よろしくお願い致します。

A 回答 (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で登録処理し、だめなら、エラーページもしくは
自分自身をそのまま出力(不親切)しとけばよい。
    • good
    • 1

サーバサイド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などの整形フォーマットから必要なパラメータを解析する必要があります。
    • good
    • 1

JavaScriptとjavaは名前は似てますが、まったく別の言語です。


基本から勉強しなおしてください。

>JavaScriptはクライアントサイドで動くものであり

これだってそもそも間違いです。
サーバーサイドでも動かせます。
    • good
    • 0

>>しかし、『じゃぁ実際どうすれば良いの?』という所がわかりません。



基本が判ってないようです。良い書籍かサイトを探して勉強しましょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています