JSPを使ったWebMailシステムの開発
電子メール(E-mail)はインターネット上で最も広く使われているサービスの一つで、伝統的なEmailアプリケーションモードはC/S構造に基づいています。即ち、ユーザーがクライアントのメール送受信ツール(Outlook、Foxmailなど)を使ってメールサービスを提供するサーバ(163.net、263.net、371.netなど)と通信します。クライアントメールツールを使う前に、ユーザは必要な設定を行います。メールサーバのホストアドレスや通信ポートを指定するなど、インターネットを始めたばかりのユーザーにとっては、一定の困難があります。メールとWebを結合すると、つまりWebプログラミングと適切なシステム設定を通じて、ユーザーがWebにアクセスするだけで、完全なメールサービスが得られ、利用できるようになります。このシステムをWebMailと呼びます。WebMailは現在、インターネットで最も人気のあるサービスの一つであり、多くのウェブサイトで必須機能の一つでもあります。またWebMailも企業やキャンパスネットの応用に適しています。通常はバックグラウンドサーバーの構築と設置が完了したらWebMailシステムを実現しますが、フロントの開発作業は主に開発ツールとバックグラウンドデータベースとメールサーバーの相互作用の問題です。Linuxプラットフォームで動作する様々なサーバーのソフトウェアの安定性と信頼性はずっと良くて、そしてプラットフォームを跨ぐJava開発ツールを選択してシステムをより安定させて、より高い伸縮性を持っています。JSPの性能は、JSPが提供する強力な機能はServletの上に確立されているが、JSPの性能はServletとほぼ同じである。JSPはまずServletにコンパイルします。これは少量のコードを追加するだけで、一度コンパイルしてもいいし、プリコンパイルしてもいいです。これは運行時の無駄な負担を解消します。JSPとServletの性能の違いは、リターンデータのみをバイナリとして表現します。これはJSPが戻る時はPrintWriterを使い、Servletはより速いOutputStreamに適用できるからです。JSPのカスタマイズしたラベルライブラリは大量の、複雑なJavaをカプセル化して一つのFormの中で操作できます。これらの予め定義したラベルはJavaの知識がない人に容易に呼び出されます。したがって、JSPカスタムのタブライブラリは、JavaプログラマとWeb設計者の作業の区分を効果的に実現することができる。しかし、ページに適用される各ラベルは、Webコンテナが新しいラベルハンドルオブジェクトを作成するか、ラベルバッファから抽出しなければならない。そのため、あまりにも多くのアプリケーションをカスタマイズしたタグは、不必要な資源の浪費をもたらす。BodyTagsは特別なカスタムラベルであり、その間に実装されたコンテンツを抽出したり、それらを置き換えることができます。BodyTags間の内容は通常メモリにバックアップされます。BodyTagsの間に入れ子と繰り返しができるので、多段のBodyTagsをプログラムに適用すると多くの貴重なメモリとシステムリソースを占有します。WebMailの主な機能を実現するシステムは、取得、読書、書き込み、転送、返信、印刷、削除、ユーザ管理の機能を提供する。システムのクロスプラットフォーム性を考慮して、Java及び関連技術製品を開発ツールとして採用し、特にJSPをサービスプログラムとして採用することにより、クライアントに対して他の要求もないと同時に、システムの性能は高負荷でさらに向上します。WebMailシステム全体に純Javaコードが採用されており、サーバ端末は一つのサービス要求に応答して一つのスレッドを起動し、CGIのように一つのプロセスを起動しない。このようにシステム資源を節約し、システム性能を向上させることができます。主なコード取得を実現するユーザが入力した情報は、ユーザが入力したコンテンツ取得機能をgetParameeter方式で実現し、入力したテキストコンテンツについては、下記のコードでサーバー側で取得できます。プログラムコードは以下の通りです。
String username=request.getParameter("login");String password=request.getParameter("password");Session session2=Session.getInstance(System.getProperties() ,null);Store store=session2.getStore("pop3");
は、ユーザが入力した情報に基づいてサーバに接続します。プログラムコードは以下の通りです。try{ store.connect(host,username+"%nyist.net", password);}catch(javax.mail.AuthenticationFailedException e){content=" ";}
受信したメールコードは、ユーザーから入力された情報を取得してサーバに接続します。コードは、store.connect("nyist.net",-1,request.getParameter("username")+"%nyist.net",request.getParameter("password"));
はサーバ側の情報を取得します。コードは以下の通りです。コードは以下の通りです。Folder folder = store.getFolder("INBOX");Folder.open (Folder.READ_WRITE);Message message[]=folder.getMessages();FetchProfile fp=new FetchProfile();fp.add(FetchProfile.Item.ENVELOPE);fp.add(FetchProfile.Item.FLAGS);fp.add("X-Mailer");folder.fetch(message,fp);
情報の種類がtext/htmlなら、異なる情報の種類の処理の方式は少し違っています。String contentbody="";Object o=message[j].getContent();
送信メールコードセグメントは、ユーザが入力した内容に応じて、メールヘッダ情報コードを取得する。if (message[j].isMimeType("text/plain")) { contentbody=(String)+"</td>"; StringBuffer buf=new StringBuffer(contentbody.length()+6); char ch=' '; for(int p=0;p<contentbody.length();p++)// <br> {ch=contentbody.charAt(p); if(ch=='
')buf.append("<br>"); else buf.append(ch); } contentbody=buf.toString();}
設定メールヘッダ情報コードは、以下の通りである。else if (message[j].isMimeType("text/html")) contentbody=(String)o+"</td>";
設定メールコンテンツは、ユーザがメールを送信する際には常に添付ファイルがあり、ブラウザクライアントのローカルファイルをPOPクライアントに転送するプログラムセグメントを構築する。実現コードは以下の通りです。String host = "nyist.net";String from = request.getParameter("from");String to = request.getParameter("to");String subject = request.getParameter("subject");String content = request.getParameter("content");Properties props = System.getProperties();// props.put("mail.smtp.host", host);Session session2 =Session.getInstance(props, null);
は添付ファイルをアップロードしながらアップロードファイルの数を集計し、out.println(「アップロードしました」+count+「ファイル」)を介して画面に表示します。送信されたメッセージに添付ファイルがある場合、以下のコードを使って送信します。MimeMessage message =new MimeMessage(session2);message.setFrom(new InternetAddress(from));message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));message.setSubject(subject);message.setSentDate(new Date());// create the message partMimeBodyPart messageBodyPart =new MimeBodyPart();
はTransportのsend方法を呼び出して、MIME Messageオブジェクトを構成して送信します。コードは以下の通りです。これも電子メールに必要な機能です。したがって、Webインタフェースで電子メールを削除する機能を設計しました。主なプログラムコードのセグメントは以下の通りです。コードは以下の通りです。messageBodyPart.setText(content);Multipart multipart = new MimeMultipart();multipart.addBodyPart(messageBodyPart);
はJavaをまとめて、企業ソリューションの開発、配置、管理などの複雑な問題を簡略化しました。これは対象に向けたプログラミング言語です。それが提供する標準的なシステムの枠組みとサービスは団体の開発に適しています。Javaをプログラミングツールとして採用し、高性能で利用可能性の高いWebMailサーバを開発することは非常に重要な意味があります。