
こんにちわ、初心者プログラマーのRammyと申します。
現在webで使うツールを開発中なのですが、web上にある入力フォーム内に
入力された文字列について、
1.半角英数字及び_-.のみ入力可能にする(メールアドレス判断用)
2.半角数字のみ入力可能にする(電話番号などの判断用)
3.文字列の長さをチェックし、一定の長さを超えたら送信させない
以上の入力制限処理をJAVAで行いたいのです。
現在、空白チェックのみ、チェック用のBeansを作成し、その中に
public static boolean checkBlank(){
if (kind == null || user_name == null
|| mail1 == null || mail2 == null
|| tel == null || subject == null || text == null ) {
return false;
}
if (kind .compareTo("") == 0 || user_name.compareTo("") == 0
|| mail1.compareTo("") == 0 || mail2.compareTo("") == 0
|| tel.compareTo("") == 0 || subject.compareTo("") == 0
|| text.compareTo("") == 0 ) {
return false;
}
return true;
}
このように記述してありますが、Beans内に上記の1~3の機能をつけたし
たいのです。が、いったいどのように記述したらいいのかわかりません。
1・2に関しては、入力可能な文字をあらかじめ決めておいて、入力された
文字列を分解し、入力可能文字と一致するかどうか判断する、というイメージ
はできるのですが、どう書いたらいいものかわからないのです汗
3は、lengthメソッドをやはり使うのでしょうがどう書けばいいのか・・・汗
本当に初心者な質問で申し訳ないのですがご教授下さいませんでしょうか。
ヒントでもかまいませんのでご回答いただければ幸いです、宜しくおねがい
致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
横に判定するのではなく縦に判定すれば見通しがよくなると思います。
以下の例は、フォームから入力した文字列の長さと使用文字種を判定して結果を返すページとサーブレットの例です。
-----ページ-----
<html>
<head><title>Data Input</title></head>
<body>
<form action="http://localhost:8080/minnaservlet/171847" method="GET">
<script>
var name = new Array("kind", "user_name", "mail1", "mail2", "tel", "subject", "text");
for (var i = 0; i < name.length; i ++)
document.writeln(name[i] + "<input type='text' name='" + name[i] + "'><br>");
</script>
<input type="submit" value="send">
</form>
</body>
</html>
-----サーブレット-----
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class strcheck extends HttpServlet {
private boolean TelCheck(String s) {
if (!BlankCheck(s, 10)) return(false);
return(s.matches("[0-9]*"));
};
private boolean AddrCheck(String s) {
if (!BlankCheck(s, 20)) return(false);
return(s.matches("[[0-9][a-z][A-Z][-_.@]]*"));
};
private boolean BlankCheck(String s, int l) {
if (s == null) return(false);
if ((s.compareTo("") == 0) || (s.length() > l)) return(false);
return(true);
};
public void doGet(HttpServletRequest req, HttpServletResponse res) {
String kind = req.getParameter("kind");
String user_name = req.getParameter("user_name");
String mail1 = req.getParameter("mail1");
String mail2 = req.getParameter("mail2");
String tel = req.getParameter("tel");
String subject = req.getParameter("subject");
String text = req.getParameter("text");
try {res.setContentType("text/html");
PrintWriter PW = res.getWriter();
PW.println("<html><head><title>Check</title></head>");
PW.println("<body><h1>");
if (BlankCheck(kind, 1) && BlankCheck(user_name, 10) && AddrCheck(mail1) && AddrCheck(mail2) &&
TelCheck(tel) && BlankCheck(subject, 100) && BlankCheck(text, 100))
PW.println("Input OK");
else PW.println("Input NG");
PW.println("</h1><br></body></html>");
} catch (Exception ex) { System.out.println(ex.toString()+ "::Get"); };
};
}
No.2
- 回答日時:
1,2の文字列のパターンチェックでしたら正規表現ライブラリを使いましょう。
超楽です。(正規表現を理解する必要がありますが。)
JavaWorld 2001/4月号,8月号に特集されていました。
Java関連で仕事をなされているのなら
周りの誰かが持っているでしょう。
3の長さチェックは、可能ならまずMAXLENGTHで制限して、
さらに文字列の長さをチェックすればいいでしょう。
参考URL:http://jakarta.apache.org/oro/index.html
No.1
- 回答日時:
こんにちはRammyさん。
Beansは使った事無いのでわかりませんが、文字列のチェックならこんな感じでいかがでしょう?
1.メールアドレスのチェック
public boolean chkMail(String str){
byte temp[] = str.getBytes();
boolean atmark = false;
if ( temp[0] < 97 || 122 < temp[0] ) return false;
for ( int i = 1; i < temp.length; i++) {
if ( 97 <= temp[i] && temp[i] <= 122 || temp[i] == 45) {
;
} else if ( 64 == temp[i] ) {
if (atmark == true ) {
return false;
} else {
atmark = true;
}
} else if (atmark == true && 46 == temp[i] ){
;
} else {
return false;
}
}
if (atmark == false ) return false;
return true;
}
2.半角数字のチェック
public boolean chkNumber(String str){
byte temp[] = str.getBytes();
for ( int i = 0; i < temp.length; i++) {
if ( 48 <= temp[i] && temp[i] <= 57){
;
} else {
return false;
}
}
return true;
}
3.文字数のチェック
public boolean chkLength(String str){
if ( 文字数 <= str.length() ) {
return false;
}
return true;
}
これは適当に作った物なんでもっといい方法とかあると思います。
漢字が入力された場合とかも全然考慮に入れてません。
参考程度にとどめてもらえればよいかと思います。
それでは、がんばってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jsp/Servletの動的に増えるフォ...
-
System.err. printlnとSystem.o...
-
InputStream.read()でタイムア...
-
VBSエラー"オブジェクト型の変...
-
変数を動的に作るには?
-
javaのコンパイルエラーについ...
-
パソコンキーボードで時分秒を...
-
JSPやサーブレットでSystem.out...
-
JavaScriptの変数をjavaのメソ...
-
「配列定数は、イニシャライザ...
-
javaです
-
jspでの二次元配列
-
JButton-背景の透明化
-
VBで作った乱数を一度も重複さ...
-
C#で、あるクラスのメンバーす...
-
int型のゼロ埋め
-
createImage()を使い コンパイル
-
プログラミングの問題です。大...
-
JavaFXでの表内のチェックボッ...
-
StrutsでJSPからListを受け取り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
BOOL値を逆にしたい
-
getStringの値がNULLの時の処理
-
C# ListBoxのインデックスの値...
-
javaの掲示板について
-
配列にnullを代入すると、null...
-
eclipseでoracle接続時のエラー...
-
gas カレンダー祭日設定でエラー
-
例外でBeanUtils.populateが、...
-
jsp/Servletの動的に増えるフォ...
-
日付をyyyyMMddで取得したい。
-
Javascript エラーメッセージが...
-
Tomcatを再起動するとエラーが...
-
onbeforeunloadでnullを返すとI...
-
Java配列でNullPointerExceptio...
-
postgresql接続時
-
空欄のテキストフィールドの判...
-
HashMapがおかしい
-
Stringを返す getText()メソッ...
-
JSPによる画面間のパラメータの...
おすすめ情報