Javaソースサンプル

目次

Javaクラスソースのサンプル集です。

テキスト処理
ファイル I/O
データベースアクセス
ソケット処理
・JavaBeans
・Servlet
戻る

テキスト処理

サンプルクラス:InputCheck
入力文字列のチェックを行います。

<メールアドレスの簡易チェック>
mailck(String mailadd) - boolean
引数mailaddの文字列がメールアドレスと判断した場合、trueを返します。それ以外はfalseを返します。

public class InputCheck {

//メールアドレスのチェック
public boolean mailck (String mailadd){
boolean rs = true;
String pattern0 = "@";
int charstr = mailadd.indexOf(pattern0);
if (charstr < 2){
rs = false;
}else{
int charleng = mailadd.length();
int laststr = charleng - mailadd.lastIndexOf(pattern0);
if (laststr < 5){
rs = false;
}else{
if (mailadd.lastIndexOf(pattern0) != mailadd.indexOf(pattern0)){
rs = false;
}
}
}
return rs;
}

}

<半角英数字チェック>
halfck(String charstr) - boolean
引数charstrの文字列がすべて半角英数字と判断した場合、trueを返します。それ以外はfalseを返します。

public class InputCheck {

//半角英数字のチェック
public boolean halfck(String charstr) {
boolean rs = true;
for (int i=0; i<charstr.length(); i++) {
if (!(charstr.charAt(i) > 0x0020 && charstr.charAt(i) < 0x007F)) {
rs = false;
break;
}
}
return rs;
}

}

<タグチェック>
tabck(String charstr) - boolean
引数charstrの文字列の中にHTMLタグがあると判断した場合、falseを返します。それ以外はtrueを返します。 このサンプルは<>が或るか無いかを判別しているため、正確なHTMLタグ判別ではありません。

public class InputCheck {

//<>文字列のチェック
public boolean tabck(String charstr) {
boolean rs = true;
String pattern0 = "<";
String pattern1 = ">";
int charcon0 = charstr.indexOf(pattern0);
int charcon1 = charstr.indexOf(pattern1);
if (charcon1 > charcon0){
rs = false;
return rs;
}else{
return rs;
}

}


サンプルクラス:InputEnc
入力文字列の変換を行います。

<HTMLタグの変換>
TabEnc(String message) - String
引数message中のHTMLタグを無効にするためのエンコードを行います。

import java.lang.String;
import java.lang.StringBuffer;

public class InputEnc {
protected String message=null;

public String TabEnc(String message){
this.message = message;
/**
* HTML 出力用に次の置換を行う
* & -> &amp;
* < -> &lt;
* > -> &gt;
* " -> &quot;
*
* @param input 置換対象の文字列
* @return 置換処理後の文字列
*/
this.message = substitute(this.message, "&", "&amp;");
this.message = substitute(this.message, "<", "&lt;");
this.message = substitute(this.message, ">", "&gt;");
this.message = substitute(this.message, "\"", "&quot;");
this.message = substitute(this.message, "'", "''");
this.message = substitute(this.message, "\\", "\\\\");
this.message = substitute(this.message, "\r\n", "<br>");
this.message = substitute(this.message, "\n", "<br>");
this.message = substitute(this.message, "\r", "<br>");
return this.message;
}

}

<平仮名をカタカナに変換>
toKatakana(String charstr) - String
引数charstr中の平仮名をカタカナに変換します。

import java.lang.String;
import java.lang.StringBuffer;

public class InputEnc {

public static String toKatakana(String charstr){
/**
* @param charstr 平仮名を含む文字列
* @return 平仮名がカタカナに変換された文字列
*/
String rs="";
for(int i=0;i<charstr.length();i++){
char code=charstr.charAt(i);
if((code>=0x3041)&&(code<=0x3093)){
/* 平仮名のときカタカナに変換 */
rs=rs+(char)(code+0x60);;
}else{
/* 平仮名以外は、そのまま */
rs=rs+(char)code;
}
}
return rs;
}

}

<平仮名をカタカナに変換>
toHiragana(String charstr) - String
引数charstr中のカタカナを平仮名に変換します。ただしヴ、ヵ、ヶの文字は対応する文字が無いため、変換しません。

import java.lang.String;
import java.lang.StringBuffer;

public class InputEnc {

public static String toHiragana(String charstr){
/**
* @param charstr カタカナを含む文字列
* @return カタカナが平仮名に変換された文字列
*/
String rs="";
for(int i=0;i<charstr.length();i++){
char code=charstr.charAt(i);
if((code>=0x30a1)&&(code<=0x30f3)){
/* カタカナのとき平仮名に変換 */
rs=rs+(char)(code-0x60);;
}else{
/* カタカナ以外は、そのまま */
rs=rs+(char)code;
}
}
return rs;
}

}

ファイル I/O

サンプルクラス:FileIORead
指定したファイルから文字データを読み取ります。

<ファイル中の文字データの読み取り>
charGet (Stirng sFilename) - String
引数sFilenameのファイルから文字データを読み取りStringで返します。

import java.io.*;
import java.util.*;

public class FileIORead {

public String charGet (String sFilename){
String rs = null;
String path = ".";
// 引数があればパス名と解釈

File inputFile = new File(sFilename);

// 入出力ストリームのインスタンス化
try {
FileReader in = new FileReader(inputFile);

int c=0;
int i=1;
String sChar = "";

while ((c = in.read()) != -1) {
sChar = sChar + (char) c ;
}

// 読み取った文字列の処理
in.close();
return sChar;
} catch (IOException e) {
System.out.println("入出力例外が発生。");
System.out.println(e);
return sChar;
}
}

}

<値の読み取り>
InputConf (String filename, String key) - String
引数filenameのファイルから文字データを読み取り、特定の項目keyの=移行、後ろの値を読み取ります。一般にconfファイルやiniファイルの記述に対応しています。

import java.io.*;
import java.util.*;

public class FileIORead {

public String InputConf (String filename, String key){
File inputFile = new File(filename);
try {
FileInputStream fis = new FileInputStream(inputFile);
Properties pr = new Properties();
pr.load(fis);
String value = pr.getProperty(key);
return value ;
}catch (IOException e) {
System.out.println("入出力例外が発生。");
System.out.println(e);
return null ;
}
}

}

サンプルクラス:FileIOWrite
指定したファイルに文字データを書き込みます。

<文字データの書き込み>
charWrite (String filename, String chara) - boolean
引数filenameのファイルに引数chara文字データを書き込みます。

import java.io.*;

public class FileIOWrite {

public boolean charWriter (String filename,String chara) {
boolean res = false;

try {
File csv = new File(filename); // データファイル
BufferedWriter bw = new BufferedWriter(new FileWriter(csv, true)); // 追記モード
// 新たなデータ行の追加
bw.write(chara);
bw.newLine();
bw.close();
res = true;
}catch (FileNotFoundException e) {
// Fileオブジェクト生成時の例外捕捉
e.printStackTrace();
}catch (IOException e) {
// BufferedWriterオブジェクトのクローズ時の例外捕捉
e.printStackTrace();
}

return res;
}

}

データベースアクセス

サンプルクラス:DataBaseAccessOra
OracleJDBCドライバーを用いてOracleデータベースに接続します。PostgresJDBCドライバーを使用した場合もほぼ同様のコードになります。

<データベース接続>
connect(String Connect_str,String username,String password) - Connection
JDBC接続文字列(Connect_str)、ユーザ名(username)、パスワード(password)を引数にとり、接続します。戻り値Connectionの扱いについては次のサンプルクラスを参考にして下さい。

import java.sql.*;

public class DataBaseAccessOra{

//DBへ接続するためのメソッド
private Connection con = null;
public Connection connect(String Connect_str,String username,String password){

try {
//Oracle用のJDBCドライバをロード
Class.forName("oracle.jdbc.driver.OracleDriver");
//Oracle接続文字列(JDBC)
String ora_connect = "jdbc:oracle:thin:@" + Connect_str;
//DBへ接続
con = DriverManager.getConnection(ora_connect, username, password);
} catch (Exception ex) {
ex.printStackTrace();
}
return con;
}

} 

<データベース切断>
disconnect(Connection con) - void
接続時に使用したConnection conを引数にとり、その接続に対して切断します。

import java.sql.*;

public class DataBaseAccessOra{

//DBから切断するためのメソッド
public void disconnect(Connection con) {

try {
con.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}

} 

<クエリ実行>
doQuery(Connection con,String sql) - ResultSet
接続時に使用したConnection conと、実行SQL文String sqlを引数にとり、その接続に対してクエリを実行します。戻り値ResultSetの扱いについては、次のサンプルクラスを参考にして下さい。

import java.sql.*;

public class DataBaseAccessOra{

//クエリを実行するメソッド
public ResultSet doQuery(Connection con, String sql) {

if (con==null) return null;
ResultSet rs = null;
try {
//DBへアクセス
Statement stmt = con.createStatement();
rs = stmt.executeQuery(sql);
}catch (SQLException ex) {
rs = null;
ex.printStackTrace();
}
return rs;
}

} 

サンプルクラス:DataBaseGetData
データベースアクセスクラスを用いてデータを取得します。

<1件データの取得>
opendata (String value,String col) - String
テーブル名table_nameにおいて、第二引数col列の値が第一引数value値と一致するmessage列の値をStringによって返します。尚、ここで扱うSQL文は結果が1つの場合しか対応していません。複数行返すSQL文を使って複数行の結果を取得する場合はBeansを用いる次のサンプルクラスを使ってください。

import java.sql.*;

public class DataBaseGetData{

public String opendata (String value,String col){

DataBaseAccessOra dbao = new DataBaseAccessOra();

String sConnection = hoge:1521:testdb;
String sDBusername = scott;
String sDBpasswd = tiger;
Connection con = dbao.connect(sConnection,sDBusername,sDBpasswd);
String msgText = "";

try {
//次のSQL文の結果が戻り値になります。

ResultSet sql = dbao.doQuery(con,"select message from table_name where " + col + " = " + value);

ResultSetMetaData rm = sql.getMetaData();
int cnum = rm.getColumnCount();
while(sql.next()){
msgText = sql.getString(1);
}
sql.close();
}catch (SQLException ex) {
ex.printStackTrace();
}finally {
//DBから切断
dbao.disconnect(con);
}
return msgText;
}

} 


ソケット処理

サンプルクラス:SMTPSock
メールサーバに対し、SMTPの通信を行いコマンドを実行します。

<SMTP>
SMTPSock(String host, String sender, String receiver, String title, String content) - void
hostに接続先SMTPサーバアドレス、Portはソース内で25指定、senderは送信元、receiverは宛先、titleはSubject、contentはDATAを入力します。通常のHELOからDATAまでのSMTPコマンドをソケット通信で送ります。

import java.net.*;
import java.io.*;

public class SMTPSock {

//SMTPポート、改行コードの指定
static final int DEFAULT_PORT = 25;
static final String CRLF = "\n";

BufferedReader reply;
PrintStream send;
Socket sock;

public static void main(String[] args) {

//引数の数をチェックします。
if( args.length < 5 ) {
System.out.println(
"Usage: java SMTPSock smtp-server sender receiver title content");
}
else {
new SMTPSock(args[0], 25, args[1], args[2], args[3], args[4]);
}
}

public SMTPSock(String host, int port, String sender, String receiver,
String title, String content) {

try {
sock = new Socket(host, port); //ソケット生成、接続
reply = new BufferedReader(new InputStreamReader(sock.getInputStream()));
send = new PrintStream(sock.getOutputStream());
String rstr = reply.readLine(); //受信メッセージrstrの生成
sendMessage(sender, receiver, title, content); //SMTP通信の開始
}
catch (Exception e) {
try {
if (sock != null) {
sock.close();
}
}
catch (IOException ex) {}
}
}

public void sendMessage(String sender, String receiver,String title, String message )

throws IOException, ProtocolException {
String rstr;
String sstr;
InetAddress local;

//SMTPコマンドの生成
try {
String host = InetAddress.getLocalHost().getHostName();
//HELO
send.print("HELO " + host + CRLF);
send.flush();
rstr = reply.readLine();
System.out.println("HELO "+host+CRLF+rstr);

if (!rstr.startsWith("250")) {
throw new ProtocolException(rstr);
}

//MAIL FROM(送信元)
send.print("MAIL FROM: "+sender+CRLF);
send.flush();
rstr = reply.readLine();
System.out.println("MAIL FROM: "+sender+CRLF+rstr);

if (!rstr.startsWith("250")) {
throw new ProtocolException(rstr);
}

//RCPT TO(送信先)
send.print("RCPT TO: "+receiver+CRLF);
send.flush();
rstr = reply.readLine();
System.out.println("RCTP TO: "+receiver+CRLF+rstr);

if (!rstr.startsWith("250")) {
throw new ProtocolException(rstr);
}

//ヘッダー、本文の入力
send.print("DATA"+CRLF);
send.flush();
rstr = reply.readLine();

if (!rstr.startsWith("354")) {
throw new ProtocolException(rstr);
}

send.print("From: "+sender+CRLF);
send.print("To: " + receiver+CRLF);
send.print("Subject: " + title+CRLF);
send.print("Comment: Unauthenticated sender"+CRLF);
send.print("X-Mailer: SMTP"+CRLF);
send.print("Return-Path: <"+sender+">"+CRLF);
send.print("Errors-To: <"+sender+">"+CRLF);
send.print(CRLF);
send.print(message+CRLF);
send.print(".");
send.print(CRLF);
send.flush();
rstr = reply.readLine();

if (!rstr.startsWith("250")) {
throw new ProtocolException(rstr);
}
send.print("QUIT"+CRLF);
send.flush();
sock.close();
}
catch (IOException e) {
sock.close();
}
}
}

 

 

JavaBeans

 

 

サーブレット

 

 


<戻る>