![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование JavaMail в JavaServer-страницах
В этом разделе мы рассмотрим возможности вызова кода JavaMail из приложений J2EE. В качестве примеров в основном используется код страниц JavaServer Pages (JSP) и связанные с ним пакеты J2EE. Предназначение данного раздела — помочь читателю самостоятельно создать две функции, использующие JavaMail для отправки и получения почты. Ниже приведена структура папок для этого упражнения: JavaMail JavaMail\src JavaMail\src\app JavaMail\src\app\docroot JavaMail\src\app\docroot\web-inf JavaMail\src\earroot JavaMail\src\earroot\Meta-inf Общие указания Ниже приведены общие указания по созданию J2EE-приложения с использованием JavaMail. Если вам нужна более подробная информация, обратитесь к разделу этой главы "Подробные указания". Создание HTML-формы 1. При помощи Notepad создайте HTML-форму и сохраните ее в файле с именем sendmail.html в папке JavaMail\src\app\docroot. 1. Форма должна обладать следующими характеристиками: Текстовое поле с именем from. Текстовое поле с именем to. Текстовое поле с именем subject. Поле textarea с именем msgpartl. Поле textarea с именем msgpart2. Кнопка Submit. Атрибут action тега form должен иметь значение http://localhost/JavaMail/app/sendmail.jsp (замените localhost/JavaMail на соответствующие имена сервера и папки вашей системы). В качестве атрибута method тега form должен быть установлен post. Создание отправляющего JSP-файла
1. При помощи Notepad создайте текстовый файл с именем sendmail.jsp в папке JavaMail\src\app\docroot. 2. Добавьте директиву JSP для импорта следующих пакетов: javax.naming.* javax.mail.* javax.mail.internet.* java.util.*
3. Получите ссылку на объект Session JavaMail через JNDI при помощи JNDI-имени java:comp/env/mail/mymail. Создайте сообщение из двух частей; первая его часть должна содержать данные из поля формы msgpartl, а вторая — из поля msgpart2. Отправьте сообщение по адресам, указанным в поле ТО. Создание получающего JSP-файла
В Notepad создайте текстовый файл с именем readmail.jsp в папке JavaMail\src\ app\docroot. Добавьте директиву JSP для импорта следующих пакетов: javax.naming.* javax.mail.* javax.mail.internet.* java.util.*
Получите имя пользователя, пароль и почтовый сервер из строки запроса, воспользовавшись ключами user-id, password и server. Получите указатель на объект JavaMail Session через JNDI, воспользовавшись JNDI-именем java:comp/env/mail/mymail. Считайте все сообщения и выведите их в браузер пользователя. Создание файла и2ЕЕ-приложения В Notepad создайте текстовый файл с именем application.xml в папке JavaMail\src\ earroot\Meta-inf. Файл должен связать контекст (context root) с именем арр, с архивом Web Archive, javamail.war:
<web-un>javamail.war</web-uri> <context-root>app</context-root>
Создание дескриптора доставки J2EE В Notepad создайте текстовый файл с именем web.xml в папке JavaMail\src\app\ docroot\web-inf. Этот файл будет определять главную страницу, sendmail.html, приложения: <welcome-file-list> <welcome-file>sendmail.html</welcome-file> </welcome-file-list> Кроме того, необходимо добавить JNDI-ссылку на ресурс для объекта Session: <resource-ref> <descriptionX/description <res-ref-name>mail/mymail</res-ref-name> <res-type>javax.mail.Session</res-type> <res-auth>Container</res-auth> </resource-ref>
Создание плана доставки J2EE В Notepad создайте текстовый файл с именем javamail.plan.xml в корневой папке JavaMail. В теге <warJar> нужно ввести строки, необходимые для получения указателя на объект Session через JNDI.
Создание web-архива и архива предприятия Из папки JavaMail\src\app при помощи утилиты jar создайте архив Web Archive (WAR) и дайте ему имя javamail.war. Из корневой папки JavaMail сделайте архив Enterprise Archive (EAR) и дайте ему имя javamail.ear. Доставка архива предприятия Выполните доставку архива Enterprise Archive (EAR) при помощи соответствующей вашему серверу J2EE-пpилoжeний инструментальной программы. Тестирование страниц По завершении работы над кодом проведите тестирование страниц отправки и получения сообщений, выполнив следующие действия: 1. Запустите страницу sendmail.html http://localhost/JavaMail/app/sendmail.html (замените localhost/JavaMail на соответствующие имена сервера и папки вашей системы), заполните HTML-форму и нажмите Send. На рис. 14.4 изображена заполненная HTML-форма. 2. Запустите страницу readmail.jsp http://localhost/JavaMail/app/readmail.jsp?userid=<userid>&password=<pass>&server=<srvr> (замените на соответствующие имена сервера и папки вашей системы, замените и значения user-id, pass и srvr). На рис. 14.5 изображен результат работы JSP.
Подробные указания Ниже приведены подробные указания по созданию J2EE-пpилoжeния JavaMail. Создание HTML-формы Прежде всего нужно создать файл с кодом формы: Создайте текстовый файл в каком-нибудь редакторе. Java.util.Properties props = System.getProperties(); props.put("mail.store.protocol", "рорЗ"); props.put("mail.рорЗ.host", "mydomain.com");
Session sess = Session.getlnstance(props, null); Store store = sess.getStore("рорЗ"); store.connect("mydomain.com", "paul.alien", "mypass"); Folder inbox = store.getFolder("INBOX"); inbox.open(Folder. READ_ONLY); Message[] msgs = inbox.getMessages(); for(int i=0;i<msgs.length;i++) { Object о = Msg.getContentO; if (o instanceof MimeMultipart) { // Сообщение состоит из нескольких частей, // значит, его нужно отправить в контейнер MimeMultipart mp = (MimeMultipart) о; // Циклический обход контейнера for (int i=0, count=mp. getCount (); Kcount; i++) { // Получение отдельной части Part p = mp.getBodyPart(i); if (ip.getContentType().equals("text/plain")) { // Если сообщение содержит не текст, // получаем декодированный поток InputStream. InputStream is = p.getInputStream(); // Пробуем получить имя файла фрагмента String filename = p.getFileName(); if (filename = null) filename = "content"+i; // Создаем OutputStream OutputStream os = new FileOutputStream(filename); int b; byte buffer[] = new byte[1024]; // Считываем блок файла и записываем его while ((b = is.read(buffer)) > 0) { os.write(buffer, 0, b); } // Сообщаем о наличии присоединенных данных System.out.println(filename+" сохранен на диске"); // Вызываем метод Flush объекта OutputStream и закрываем его os.flush (); os. close (); } else { // Вывод содержимого System.out.println(p.getContent()); } } } else { // Иначе — сообщение состоит из одной части message // Вывод содержимого System.out.println(msgs[i].getContent()); } } // Закрываем папку и архив Inbox.close(false); store.close ();
Определите необходимые теги HTML-страницы. <html> </html>
3. В только что созданный тег <html> вставьте тег form. Значение его атрибута action должно быть /sendmail.jsp, значение атрибута method — post (в качестве текущей базы данных подставьте JavaMail). <form action="sendmail.jsp" method="post"> </form>
4. В тег <form>, созданный на этапе 3, вставьте поля ввода. <p>From (адрес электронной почты) <input type="text" name="from" size="32" maxlength="32"> </p> <p>To (адрес электронной почты) <input type="text" name="to" size="32" maxlength="32"> </p> <pX/p> <p>Subject <input type="text" name="subject" size="50" maxlength="50"> <br> Message Partfl <textarea cols="50" rows="5" name="msgpartl"X/textarea> <br> Message Part#2 <textarea cols="50" rows="5" name="msgpart2"X/textarea> <br> <input type="submit"> <br> </p>
5. Сохраните файл под именем sendmail.html в папке JavaMail\src\app\docroot. Создание отправляющего JSP-файла Следующим шагом будет создание файла, содержащего JSP-код, отправляющий сообщение адресату: Создайте текстовый файл. Добавьте директиву JSP для импорта следующих пакетов: javax.naming.* javax.mail.* javax.mail.internet.* java.util.* <%@ page import= "javax.naming.*,javax.mail.*,javax.mail.internet.*, java.util.*" %>
3. При помощи JNDI получите указатель на объект Session через JNDI-имя javaxomp/env/mail/mymail: <% InitialContext ic = new InitialContext(); Session sess = (Session) ic.lookup("java:comp/env/mail/mymail");
4. Создайте сообщение из двух частей, первая часть которого будет получена из поля формы msgpartl, а вторая — из поля msgpait2: MimeMessage m = new MimeMessage(sess); MimeBodyPart parti = new MimeBodyPart(); parti.setContent(request.getParameter("msgpartl"),"text/plain"); MimeBodyPart part2 = new MimeBodyPart(); part2.setContent(request.getParameter("msgpart2"),"text/plain"); MimeMultipart mp = new MimeMultipart(); mp.addBodyPart(parti); mp.addBodyPart(part2); m.setContent(mp);
5. Укажите, кому должно быть отправлено сообщение, и создайте строку темы: m.set From(new InternetAddress(request. getParameter("from"))); m.setRecipients(Message.RecipientType,TO,InternetAddress.parse(request.getParameter("to"),false)); m.setSubject(request.getParameter("subject"));
6. Отправьте сообщение: Transport.send(m); out.println("Сообщение отправлено.");
%>
7. Сохраните файл в папке JavaMail\src\app\docroot под именем sendmail.jsp. Создание получающего JSP-файла Следующим шагом будет создание файла, содержащего JSP-код, получающий сообщения из почтового ящика пользователя: Создайте текстовый файл. Добавьте директиву JSP для импорта следующих пакетов: javax.naming.* javax.mail.* javax.mail.internet.* Java.util.* <%@ page import="javax.naming.*, javax.mail.*, javax.mail.internet.*, Java.util.*" %>
3. При помощи JNDI получите указатель на объект Session через JNDI-имя java:comp/env/mail/mymail: <% InitialContext ic = new InitialContext(); Session sess = (Session) ic.lookup("java:comp/env/mail/mymail");
4. Получите параметры userid и password из строки запроса URL: String userid = request.getParameter("userid"); String password = request.getParameter("password"); String server = request.getParameter("server"); 5. Подсоединитесь к Store при помощи параметров userid и password, полученных из запроса на этапе 4: Store store = sess.getStore(); store.connect(server,userid,password);
6. Откройте папку: Folder folder = store.getFolder("INBOX"); folder.open(Folder.READ_WRITE);
7. Считайте все сообщения и отправьте их в браузер: Message[] msg = folder.getMessages(); for(int i=0;i<msg.length;i++) { out.println("<р>Сообщение: "+msg[i].getMessageNumber()+"<br>"); out.println("От: "+msg[i].getFromf)[0]+"<br>"); out.println("Дата отправки: "+msg[i].getSentDatef)+"<br>"); out.println("Тема: "+msg[i].getSubject()+"<br>"); if(msg[i].getContent() instanceof MimeMultipart) { MimeMultipart mp = (MimeMultipart) msg[i].getContent(); for(int j=0,count=mp.getCount();j<count;j++) { Part p = mp.getBodyPart(j); out.println(" начало содержимого multipart <br>"); out.println(p.getContent() + "<br>"); out.println(" конец содержимого multipart <br>"); } else { out.println(" начало содержимого <br>"); out.println(msg[i].getContent()+"<br>"); out.println(" конец содержимого <br>"); } out.println("</p>"); } folder.close(false); store.close();%>
8. Сохраните файл в папке JavaMail\src\app\docroot под именем readmail.jsp. Создание файла J2EE-приложения В Notepad создайте текстовый файл с именем application.xml в папке JavaMail\src\earroot\Meta-inf. Ниже приведено содержимое этого файла: <?xml version="1.0" encoding="IS08859_l"?> <!DOCTYPE application PUBLIC '-//Sun Microsystems, Inc. //DTD J2EE Application 1.2//EN' 'http://java.sun.com/j2ee/dtds/application_l_2.dtd'> <application> <display-name>JavaMail</display-name> <description>OroicaHHe пpилoжeния</description> <module> <web> <web-uri>javamail.war</web-uri> <context-root>app</context-root> </web> </module> </application>
Создание дескриптора доставки J2EE В Notepad создайте текстовый файл web.xml в папке JavaMail\src\app\docroot\web-inf. Этот файл будет определять главную страницу, sendmail.html, приложения, а также создавать ссылку на JNDI-pecypc для объекта Session. Ниже приведен код этого файла:
<?xml version="l.О" encoding="IS0-8859-l"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> <web-app> <! — Список Welcome File —> <welcome-file-list> <welcome-file>sendmail.html</welcome-file> </welcome-file-list> <resource-ref> <descriptionX/description> <res-ref-name>mail/mymail</res-ref-name> <res-type>javax.mail.Session</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
Создание плана доставки J2EE В Notepad создайте текстовый файл с именем javamail.plan.xml в корневой папке JavaMail. В тег <warJar> нужно вставить строки, необходимые для получения указателя на объект Session через JNDI. Ниже приведен полный текст этого файла для среды сервера приложений SilverStream (см. гл. 19; в этой главе содержится более подробная информация о содержимом этого файла для других J2EE-coBMecraMbix серверов приложений): <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?AgMetaXML 1.0?> <earJarOptions isObject="true"> <earjar isObject="true"> <earJarName>javamail.ear</earJarName> <moduleList isObject="true"> <module isObject="true"> <warJar isObject="true"> <warJarName>javamail.war</warJarName> <isEnabled type="Boolean">true</isEnabled> <URL>javaniail</URL> <resourceReferenceList isObject="true"> <resourceReference isObject="true"> <name>mail/mymail</name> <mailRefProperties type="StringArray"> <el>mail.transport.protocol</el> <el>smtp</el> <el>mail.host</el> <el>ucny.com</el> <el>mail.store.protocol</el> <el>pop3</el> </mailRefProperties></resourceReference></resourceReferenceList> </warJar></module></moduleList></earJar></earJarOptions>
|
|||||||||||
Последнее изменение этой страницы: 2020-03-02; просмотров: 103; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.53.168 (0.076 с.) |