Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 99; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.79.60 (0.083 с.) |