こんにちわ、初心者プログラマーの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で質問しましょう!
似たような質問が見つかりました
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- PHP ここで言う空文字の意味とは? 1 2022/08/05 16:27
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
Javascript エラーメッセージが...
-
getStringの値がNULLの時の処理
-
BOOL値を逆にしたい
-
Stringを返す getText()メソッ...
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
jsp/Servletの動的に増えるフォ...
-
例外でBeanUtils.populateが、...
-
JavaBeansにDBの値を格納
-
JSPでの画面表示の方法
-
javaで質問です。 文字列2023/2...
-
C言語のポインターに関する警告
-
ループ処理の際、最後だけ","を...
-
[JAVA]try 内の変数を外で!?
-
System.err. printlnとSystem.o...
-
JSPやサーブレットでSystem.out...
-
EXCEL VBA で、0から?1から?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ORA-01858: 数値を指定する箇所...
-
配列にnullを代入すると、null...
-
Java配列でNullPointerExceptio...
-
BOOL値を逆にしたい
-
getStringの値がNULLの時の処理
-
C# ListBoxのインデックスの値...
-
eclipseでoracle接続時のエラー...
-
gas カレンダー祭日設定でエラー
-
Javascript エラーメッセージが...
-
java 引数 戻り値のあるメソッド
-
C#でラジオボタンとコンボボッ...
-
MySQLのテーブル名を変数に置い...
-
jsp/Servletの動的に増えるフォ...
-
例外でBeanUtils.populateが、...
-
Stringを返す getText()メソッ...
-
JSPで複数のSQL実行につ...
-
if文を通らない
-
逆コンパイルの見方について(...
-
逆コンパイルの見方について(...
-
この世で連日正規表現について...
おすすめ情報