﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-罗比特-随笔分类-JSP</title><link>http://www.blogjava.net/qazwindy/category/33034.html</link><description>学习笔记</description><language>zh-cn</language><lastBuildDate>Sat, 19 Jul 2008 21:25:55 GMT</lastBuildDate><pubDate>Sat, 19 Jul 2008 21:25:55 GMT</pubDate><ttl>60</ttl><item><title>Java Mail</title><link>http://www.blogjava.net/qazwindy/archive/2008/07/20/216128.html</link><dc:creator>罗比特</dc:creator><author>罗比特</author><pubDate>Sat, 19 Jul 2008 21:06:00 GMT</pubDate><guid>http://www.blogjava.net/qazwindy/archive/2008/07/20/216128.html</guid><wfw:comment>http://www.blogjava.net/qazwindy/comments/216128.html</wfw:comment><comments>http://www.blogjava.net/qazwindy/archive/2008/07/20/216128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qazwindy/comments/commentRss/216128.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qazwindy/services/trackbacks/216128.html</trackback:ping><description><![CDATA[<p>这里先介绍用Java Mail 类实现发送邮件，然后再介绍Commons Email组件实现发送简单邮件和带附件的邮件</p>
首先到官网上下载 Java Mail 1.4.1<br />
http://java.sun.com/products/javamail/index.html<br />
添加mail.jar到用户库中, 然后构建邮件并发送<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">impoet&nbsp;javax.mail.</span><span style="color: #000000">*</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Properties&nbsp;props</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Properties();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Session&nbsp;session</span><span style="color: #000000">=</span><span style="color: #000000">Session.getInstance(props,</span><span style="color: #0000ff">null</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />props.put(</span><span style="color: #000000">"</span><span style="color: #000000">mail.host</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">127.0.0.1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />props.put(</span><span style="color: #000000">"</span><span style="color: #000000">mail.transport.protocol</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">smtp</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Message&nbsp;message</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;MimeMessage(session);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">message构建邮件内容，因为Message是抽象类，所以这里用它的子类MimeMessage</span><span style="color: #008000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">message.setForm(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InternetAddress(</span><span style="color: #000000">"</span><span style="color: #000000">abc@163.com</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />message.setRecipient(Message.RecipientType.To,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;InternetAddress(</span><span style="color: #000000">"</span><span style="color: #000000">123@163.com</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />message.setSubject(</span><span style="color: #000000">"</span><span style="color: #000000">Hello</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />message.setText(</span><span style="color: #000000">"</span><span style="color: #000000">I&nbsp;love&nbsp;java</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Transport.send(message);</span></div>
<br />
Commons Email组件很好的封装了Java Mail 类，用起来更加方便，功能更强大<br />
下载该组件，把commons-email-1.1.jar 加载到该应用中<br />
用Servlet处理发邮件，在doPost()方法中添加如下代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">request.setCharacterEnconding(</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
SimpleEmail&nbsp;email</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SimpleEmail();<br />
email.setHostName(</span><span style="color: #000000">"</span><span style="color: #000000">smtp.sina.com</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
email.setAuthentication(</span><span style="color: #000000">"</span><span style="color: #000000">username</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">password</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008000">//</span><span style="color: #008000">这里设定一下邮件内容编码格式</span><span style="color: #008000"><br />
</span><span style="color: #000000">email.setCharset(</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008000">//</span><span style="color: #008000">request.getParameter()从提交的表单中获取信息</span><span style="color: #008000"><br />
</span><span style="color: #000000">email.setFrom(request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">from</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
email.addTo(request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">to</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
email.setSubjet(request.getPatameter(</span><span style="color: #000000">"</span><span style="color: #000000">subject</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
email.setMsg(request.getParameter(</span><span style="color: #000000">"</span><span style="color: #000000">content</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
email.send();<br />
</span></div>
<br />
下面介绍带附件的邮件如何编写，实际上就是把上述两部分结合。<br />
首先，表单里要有"file"域，在表单标签里添加　&lt;Form enctype="multipart/form-data"&gt;<br />
写一个方法getFile()，返回file类型，具体的内容请参加File Upload 那篇文章，先把文件存在web server的一个目录上，然后再发送<br />
所不同的是，这次，构建一个MultiPartEmail email=new MultiPartEmail();<br />
然后按上述代码添加好主题，内容等,需要注意的是，在getFile()中获取文件的时候，已经获取了表单域的信息，把这些信息存在一个HashMap中，然后通过email对象的方法添加这些信息时，直接从HashMap中获得即可<br />
通过getFile()获得文件，然后<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">if</span><span style="color: #000000">(file</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
{<br />
&nbsp;&nbsp;EmailAttachment&nbsp;att</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmailAttachment();<br />
&nbsp;&nbsp;att.setPath(file.getPath());<br />
&nbsp;&nbsp;att.setDisposition(EmailAttachment.ATTACHMENT);</span><span style="color: #008000">//</span><span style="color: #008000">这里是附件的类型</span><span style="color: #008000"><br />
</span><span style="color: #000000">　att.setName(file.getName());<br />
&nbsp;&nbsp;email.addattach(att);<br />
}</span></div>
<br />
<img src ="http://www.blogjava.net/qazwindy/aggbug/216128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qazwindy/" target="_blank">罗比特</a> 2008-07-20 05:06 <a href="http://www.blogjava.net/qazwindy/archive/2008/07/20/216128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件上传 File Upload</title><link>http://www.blogjava.net/qazwindy/archive/2008/07/20/216125.html</link><dc:creator>罗比特</dc:creator><author>罗比特</author><pubDate>Sat, 19 Jul 2008 20:30:00 GMT</pubDate><guid>http://www.blogjava.net/qazwindy/archive/2008/07/20/216125.html</guid><wfw:comment>http://www.blogjava.net/qazwindy/comments/216125.html</wfw:comment><comments>http://www.blogjava.net/qazwindy/archive/2008/07/20/216125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/qazwindy/comments/commentRss/216125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/qazwindy/services/trackbacks/216125.html</trackback:ping><description><![CDATA[&nbsp; 在Web应用中，实现文件上传，可以用这个组件：Commons FileUpload<br />
&nbsp; 先到Apache官网下载这个组件，并将Commons-Fileupload.jar 和 Commons-io.jar加到用户库中，并添加到本应用中。<br />
&nbsp;<br />
&nbsp;&nbsp;在Servlet 添加一个Init（）方法，用来接收一些初始参数，代码如下：<br />
&nbsp;
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ServletContext&nbsp;sc;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;savePath;<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(ServletConfig&nbsp;config)<br />
{<br />
&nbsp;&nbsp;config.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">savePath</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;sc</span><span style="color: #000000">=</span><span style="color: #000000">config.getServletContext();<br />
}</span></div>
&nbsp;&nbsp; 在doPost（）方法中，添加代码：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">DiskFileItemFactory&nbsp;factoty</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DiskFileItemFactory();<br />
ServletFileUpload&nbsp;upload</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;ServletFileUpload(factory);<br />
以下需要try</span><span style="color: #000000">-</span><span style="color: #000000">catch一下<br />
List&nbsp;Items</span><span style="color: #000000">=</span><span style="color: #000000">upload.parseRequest(request);<br />
Iterator&nbsp;it</span><span style="color: #000000">=</span><span style="color: #000000">items.iterator();<br />
</span><span style="color: #0000ff">while</span><span style="color: #000000">(it.hasNext())<br />
{<br />
&nbsp;&nbsp;FileItem&nbsp;item</span><span style="color: #000000">=</span><span style="color: #000000">(FileItem)it.next();<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(item.isFormField())<br />
&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.getFiledName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.getString(</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(item.getName()</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">item.getName().equals(</span><span style="color: #000000">""</span><span style="color: #000000">))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;temp</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(item.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;file</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;File(sc.getRealPath(</span><span style="color: #000000">"</span><span style="color: #000000">/</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">savePath,temp.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;item.write(file);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/qazwindy/aggbug/216125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/qazwindy/" target="_blank">罗比特</a> 2008-07-20 04:30 <a href="http://www.blogjava.net/qazwindy/archive/2008/07/20/216125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>