﻿<?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-dyerac-随笔分类-原创文章</title><link>http://www.blogjava.net/dyerac/category/13593.html</link><description>dyerac 的天天天蓝</description><language>zh-cn</language><lastBuildDate>Thu, 26 Jul 2007 00:06:12 GMT</lastBuildDate><pubDate>Thu, 26 Jul 2007 00:06:12 GMT</pubDate><ttl>60</ttl><item><title>Google Ajax Search api 以及 web api 的设计和架构?</title><link>http://www.blogjava.net/dyerac/archive/2007/07/25/132362.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Wed, 25 Jul 2007 09:52:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2007/07/25/132362.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/132362.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2007/07/25/132362.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/132362.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/132362.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: <br>题记:<br>   其实我这篇文章纯粹是抛砖引玉之意<br>   Google Ajax Search 的api使用起来并不困难,如果有高手对此不屑一顾的话,不妨回答一下我的真正用意,那就是一个出色的web api该如何设计呢? 它的体系架构是什么? 我对此有个初步的想法, 前端开发自己的js库, 调用远端的服务. 但是具体实施该如何呢? 传输方式该是如何? JSON? 自定义XML? 还是SOAP? 现在很火的REST对 web api的设计有什么影响. 还望各位高手赐教 ^_^<br><br>    回到正题,看看如何用google api构建自己的ajax 搜索.&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2007/07/25/132362.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/132362.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2007-07-25 17:52 <a href="http://www.blogjava.net/dyerac/archive/2007/07/25/132362.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习计划</title><link>http://www.blogjava.net/dyerac/archive/2007/07/19/131329.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Thu, 19 Jul 2007 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2007/07/19/131329.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/131329.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2007/07/19/131329.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/131329.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/131329.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 考了个GRE，发现自己已经深深落伍了，5555<br>&nbsp;&nbsp;&nbsp; 现在开始学习啦，列个小小的计划吧：<br>&nbsp;&nbsp;&nbsp; 论文阅读计划：REST， Blueprint 4 mashup， J2EE Clustering<br>&nbsp;&nbsp;&nbsp; 框架学习计划：Apache CXF， Dom4J， DB4O，AspectJ<br>&nbsp;&nbsp;&nbsp; 基础学习计划：XML<br>&nbsp;&nbsp;&nbsp; 语言学习计划：Javascript，Python<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp; 重点学习计划：Ajax，REST，Web Services<br><br><br>顺便总结下这几天看的几个名词：<br><br>REST：<br>Atom：<br>Feed：<br>SOAP：<br>WSDL：<br>JSON：<br>Mashup：
<img src ="http://www.blogjava.net/dyerac/aggbug/131329.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2007-07-19 17:57 <a href="http://www.blogjava.net/dyerac/archive/2007/07/19/131329.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Editplus配置</title><link>http://www.blogjava.net/dyerac/archive/2007/07/17/130884.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Tue, 17 Jul 2007 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2007/07/17/130884.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/130884.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2007/07/17/130884.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/130884.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/130884.html</trackback:ping><description><![CDATA[其实没什么好说的，只是为了以后方便而已<br>1. 以sql为例，需要sql.stx(语法)&nbsp; sql.acp（auto completement）放到editplus目录下即可<br>2. 另外修改settings.ini等几个ini文件（主要是针对acp文件）<br>3. 并启动editplus用tool工具导入stx文件 并设置高亮染色方案（alert！我只发现了导入 没找到手工修改的方&nbsp; <br>&nbsp;&nbsp;&nbsp; 法）<br>4. 创建template.sql文件 并修改template.ini 注意 也要修改ini中显示的模板数目（而非仅仅添加）<br>5. that's all
<img src ="http://www.blogjava.net/dyerac/aggbug/130884.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2007-07-17 16:48 <a href="http://www.blogjava.net/dyerac/archive/2007/07/17/130884.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenCampus Summary</title><link>http://www.blogjava.net/dyerac/archive/2006/11/27/83792.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Mon, 27 Nov 2006 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/11/27/83792.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/83792.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/11/27/83792.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/83792.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/83792.html</trackback:ping><description><![CDATA[
		<p>  如今开源已在IT业界起到越来越大的作用，然而，大部分的中国大学生依然对此知之甚少。而国内外的主要开源社区也很少专门涉及学生领域，一定程度上减轻了学生的参与兴趣。而另一方面，许多大学生空有热情却无处练手，导致实际开发能力与经验的不足，直接影响到了大学的计算机教育质量。<br />  OpenCampus是一个专门针对大学生开发的开源社区平台，它本身就是由大学生设计开发，力争更贴切中国大学生的现状与需求。OpenCampus具有主流开源平台（如sourceforge，cosoft）的绝大多数功能，同时添加代码段共享，课程设计管理等学生专有功能模块。通过OpenCampus，大学生在认识开源世界的同时，也会在开发过程中得到不少动手实践，团队合作的宝贵经验。志同道合之人也可以有更多的交流。<br />  我们也和学校取得沟通与共识，大力发展学校的开源普及工作，充分发动学生的自主创新能力，甚至在不久的将来会增加专门的有关开源平台的独立学分。<br />  因此，我们希望能够借助cosoft的力量让更多志同道合人士加入进来，一起优化设计，为中国的大学生开源普及工作出一份力。</p>
		<p>  Nowadays open-source has played a greater role in the IT industry, but by most of the university students in China are still little known. Domestic open-source platform and the main student areas devoted to small communities, to a certain extent, reduce the student's interest to participate. Moreover, many students have nowhere to practice with warm hands, resulting in a lack of practical experience and the ability to develop, directly affecting the quality of computer education.<br />  OpenCampus is an open-source platform for the specific development of university students. This in itself is developed by students, and strive to be more appropriate to the situation and needs of university students in China. OpenCampus has the majority of functions of the mainstream open-source platform(eg sourceforge, cosoft), and the addition of code stack sharing, curriculum design management and other functional modules for students. Through OpenCampus, students at the same time recognizing the open-source world, and get involved in the development process as well which will bring them practice,team co-operation and some other valuable experience. Minded people can have more conmmunications too.<br />  We have also communicated with the school and consensus. We will vigorously develop the school's open-source popularization and workfully mobilize the student's capability of independent innovation. Even in the near future the independence credits based on OpenCampus will be devoted.<br />  Therefore, we hope to draw on the strength of cosoft letting more like-minded people join us, together with the optimal design of the platform, to contributed to the popularization of open-source in China unniversity!</p>
<img src ="http://www.blogjava.net/dyerac/aggbug/83792.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-11-27 14:25 <a href="http://www.blogjava.net/dyerac/archive/2006/11/27/83792.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己做的多功能计算器，嘿嘿</title><link>http://www.blogjava.net/dyerac/archive/2006/11/24/dollyCal.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Fri, 24 Nov 2006 10:24:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/11/24/dollyCal.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/83344.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/11/24/dollyCal.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/83344.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/83344.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      有感于windows自带计算器的不好使,最近心血来潮按自己需求开发了一个多功能计算器。其核心的一部分来自于网上的学习资料，因此我也不敢私藏代码，特拿出来和大家分享心得。<br>   计算器功能如下：<br>    1.支持运行时更换界面皮肤，水印和按钮形状等外观显示。<br>    2.支持sin, cos, tan, cot, arcsin, arccos, arctan, arccot, !, log, ln, +, -, *, /, %, 乘方等基本运算，支持连续运算并  <br>       自带PI，E的精确值。<br>    3.支持表达式计算，支持设置变量，可以轻松的实现公式运算。<br>    4.无限的结果保存，完全对用户透明，用户可以轻松的存储和读取先前的操作结果.  <br>      5.能够分析用户操作尤其是表达式中的语法错误，提醒用户而不是返回错误结果。&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/11/24/dollyCal.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/83344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-11-24 18:24 <a href="http://www.blogjava.net/dyerac/archive/2006/11/24/dollyCal.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>B/S实现远程配置SVN</title><link>http://www.blogjava.net/dyerac/archive/2006/10/21/76578.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Sat, 21 Oct 2006 14:30:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/10/21/76578.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/76578.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/10/21/76578.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/76578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/76578.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:      最近在尝试做一个类似sourceforge的开源社区，因此需要为项目申请者提供远程SVN的配置。这里列出自己的代码和心得，一是为了与大家相互交流，更重要的是为了让各位提提意见，看看还需要什么内容。<br>现在提供的功能有：<br>   为项目创建svn仓库，修改svn账户密码，修改svn权限配置等。&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/10/21/76578.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/76578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-10-21 22:30 <a href="http://www.blogjava.net/dyerac/archive/2006/10/21/76578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在myeclipse下整合spring和hibernate</title><link>http://www.blogjava.net/dyerac/archive/2006/08/04/61805.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Fri, 04 Aug 2006 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/08/04/61805.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/61805.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/08/04/61805.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/61805.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/61805.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 整合hibernate和spring这样的文章已经很多了,下面我们来看看如何利用myeclipse的功能为整合提速咯		1.首先,创建工程,可以直接选创建J2EE web工程   (这....就不用贴图了吧)2.导入spring, 选择myeclipse的add spring capabilities,注意把copy .....打勾(注,如果想要在spring的配置文件中配置hibernate...&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/08/04/61805.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/61805.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-08-04 17:42 <a href="http://www.blogjava.net/dyerac/archive/2006/08/04/61805.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在web应用中部署你自己的验证码(jsp,jsf两种方式)</title><link>http://www.blogjava.net/dyerac/archive/2006/08/03/61489.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Thu, 03 Aug 2006 04:52:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/08/03/61489.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/61489.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/08/03/61489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/61489.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/61489.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:     在web系统中,验证码的应用基本上随处可见.验证码可以防止他人恶意攻击和垃圾注册,可以说已成了web开发中必不可少的环节.遗憾的是,验证码在jsp,jsf的组件库, 至少是一些标准的组件库中并没有出现.本文分别介绍如何在jsp和jsf中使用验证码和我的一些小经验,呵呵.<br>     在jsp中,我们使用apache的taglibs-image(http://jakarta.apache.org/taglibs/sandbox/doc/image-doc/intro.html),可以简便的配置自己的验证码.而由于在jsf中,无法和其他jsp标签库混用(至少不能和上述标签库混用),我们则用Java2D自己绘制验证码图.<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/08/03/61489.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/61489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-08-03 12:52 <a href="http://www.blogjava.net/dyerac/archive/2006/08/03/61489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaMail学习笔记</title><link>http://www.blogjava.net/dyerac/archive/2006/08/02/61395.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Wed, 02 Aug 2006 13:09:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/08/02/61395.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/61395.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/08/02/61395.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/61395.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/61395.html</trackback:ping><description><![CDATA[把以前写的转过来咯  <br /><br />   作为企业级应用的JavaEE,邮件收发毫无疑问是其重要技术组成;在这方面,JavaMail库和Apache的通用电子邮件软件包给我们提供了两个选择.不过通用电子邮件库实际上是包裹在JavaMail外层的API，所以无论我们选择哪种API,都需要JavaMail库;我们可能还需要JavaBeans激活框架(JavaBeans Activation Framework(JAF)),该框架将负责处理关于邮件选项的更复杂的内容.由于通用电子邮件软件包并没有实现收取邮件的操作,在这里,我们暂且只讨论JavaMail的实现. 
<p>一.邮件的发送<br />  第一件要知道的事情是,你的SMTP服务器的主机名,它负责将您的邮件发送到外部世界的机器.一般来说这些服务器都符合命名习惯,比如,如果你的邮箱是<a href="mailto:acmilan@sina.com.cn">acmilan@sina.com.cn</a>,那么SMTP服务器的主机名则是smtp.sina.com.cn;另外也可以参考各大网站自己的说明.为了方便,下文中以网易邮箱为例.<br />  JavaMail使用了Session类的概念来保存诸如SMTP主机和认证的信息，主要想法是基于会话（Sessions）在Java虚拟机中可以被隔离，这可以阻止恶意代码窃取其他用户在其他会话中的信息，这些信息可能包括用户名和密码等认证信息.你所要发送的邮件将保存在一个Message对象中,而这个Message对象则是由你所构造的session实例来创建<br />  要得到一个特定的session对象,可以通过一下代码:<br />      //设置session的属性<br />      Properties pro = new Properties();<br />      pro.put("mail.transport.protocol", "smtp");<br />      pro.put("mail.smtp.auth", "true");<br />      pro.put("mail.smtp.host", "smtp.126.com");<br />      pro.put("mail.host", "126.com");<br />      <br />      //设置认证器<br />      PopupAuthenticator pop = new PopupAuthenticator();<br />      pop.performCheck("My Name", "My Password");//你的帐户和密码<br />      <br />      //得到session<br />      Session mailSession = Session.getInstance(pro, pop);<br />  要注意的是,为了避免垃圾邮件,大多数的smtp服务器需要认证,SMTP认证(SMTP AUTH)需要用户名和密码来发送邮件;因此,必须在session的初始化参数中设置一个认证者（Authenticator）来返回所需的认证证书,具体代码必须由自己来实现:<br />     class PopupAuthenticator extends Authenticator {<br />       String username = null;<br />       String password = null;<br />       public PopupAuthenticator() {}<br />       public PasswordAuthentication performCheck(String user, String pass) {<br />         username = user;<br />         password = pass;<br />         return getPasswordAuthentication();<br />        }<br />       protected PasswordAuthentication getPasswordAuthentication() {<br />         return new PasswordAuthentication(username, password);<br />        }<br />      }</p><p>  接着,就可以用之前得到的session来构造Message对象:<br />    Message msg = new MimeMessage(mailSession);  <br />  在使用会话创建了一个MimeMessage后,我们需要来填充这个消息.首先是设置表头信息,Message类定义了邮件系统中使用的属性,由名字-值对组成,使用这些名字-值可以指定邮件表头信息,Javamail提供了一系列api用于设置常见的邮件表头,其中在涉及地址的操作时,我们用InternetAddress来进行封装:<br />      msg.setFrom(new InternetAddress ("<a href="mailto:acmilan@126.com">acmilan@126.com</a>");<br />      msg.setSubject("Hello");<br />      msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse("<a href="mailto:intermilan@126.com">intermilan@126.com</a>", false));<br />      msg.setText("I will beat u");<br />      msg.setSentDate(new Date());<br />      //发送消息<br />      Transport.send(msg);<br />  对Transport类的调用将会去查找适当的会话，并找出如何发送消息，尽管这样做看上去有些不直观。当我们完成这一步的时候，我们的邮件就已经发送出去了。此时，我们还需要添加代码来捕获三种JavaMail可能抛出的异常，它们是AddressException、MessagingException和UnsupportedEncodingException. 但这就是最基本的使用JavaMail发送邮件的方法。<br />  有时候我们还需要给邮件添加附件.再回到之前对Message的讨论中,Message对象同样定义了邮件的内容,它可以定义一个消息内容,也可以定义多个消息内容,消息内容(通常指的是附件)都将由DataHandle下的类来处理.Message对象由Multipart组成,一个Multipart可含有多个BodyPart,这些BodyPart将用来保存文本信息和附件.<br />      MimeMultipart multipart = new MimeMultipart();<br />      BodyPart msgBodyPart = new MimeBodyPart();//用来放置文本内容<br />      msgBodyPart.setContent(message, "text/plain");<br />      BodyPart attBodyPart = new MimeBodyPart();//用来放置附件<br />      DataSource ds = new FileDataSource(new File("c:/td.txt"));<br />      attBodyPart.setDataHandler(new DataHandler(ds));//设置DataHandler<br />      attBodyPart.setFileName("bsbs.txt");//附件的显示名字<br />      multipart.addBodyPart(msgBodyPart);<br />      multipart.addBodyPart(attBodyPart);<br />      msg.setContent(multipart);<br />      Transport.send(msg);<br />   最后,我们来看看如何发送HTML格式的邮件,文本的格式必须相应的设置为text/html,邮件中的图片将以附件形式加载,另外还要指定一个内部ID以供调用;<br />      MimeMultipart multipart = new MimeMultipart();<br />      BodyPart msgBodyPart = new MimeBodyPart();<br />      //设置格式为"text/html"<br />      msgBodyPart.setContent("&lt;H1&gt;Hi! From HtmlJavaMail&lt;/H1&gt; &lt;img src=\"cid:logo\"/&gt;", "text/html");<br />      BodyPart embedImage = new MimeBodyPart();<br />      DataSource ds = new URLDataSource(new URL("<a href="http://www.zdnet.com.cn/i/developer/images/builder_logo.gif">http://www.zdnet.com.cn/i/developer/images/builder_logo.gif</a>"));<br />      embedImage.setDataHandler(new DataHandler(ds));<br />      //设置表头的内部ID,注意,所设置内容必须与前文对应,在此处,前文的引用为&lt;img src=\"cid:logo\"/&gt;,因此Content-ID表头对应<br />      //的应该是&lt;logo&gt;<br />      embedImage.setHeader("Content-ID", "&lt;logo&gt;");<br />      multipart.addBodyPart(msgBodyPart);<br />      multipart.addBodyPart(embedImage);<br />      msg.setContent(multipart);<br />   这样,一封HTML格式的邮件便完成了<br />      Transport.send(msg);</p><p><br />二.邮件的收取<br />  同样,第一步还是要获得服务器的名字.我们还是以网易为例.<br />  接收邮件包含两个协议，即POP3和IMAP。POP3是老协议，它提供一个单一收信箱，以存放一定顺序的邮件信息。IMAP相对比较新，它为邮件提供连接到一个层次关系的文件入口，其中一个入口即为收信箱。当然还有其它可以使用的协议，POP3和IMAP只是其中一种安全性很好的协议。JavaMail将这些协议提炼为一种邮件仓库(Store)的概念，这一仓库为文件等级的集合。这种提炼意味着仓库包含很多内容，但我们只需要弄清楚在一个服务文件夹中浏览与导航邮件信息的过程，而实际处理邮件协议的任务则通过JavaMail调用Provider来完成,不同的协议对应不同的provider。<br />  JavaMail的Provider操作服务于POP3和IMAP，你也可以将另外的Providers嵌入到JavaMail API以处理其它诸如NNTP或本地存储邮件的协议。在Sun主页上列出这方面的第三方Providers。<br />  在Javamail中,store和folder类是用来存储和接受消息.store由具体的session得到,它使用可带参数的connect方法与服务器连接,folder则和File有点类似,可以将其比作windows下的文件夹.客户由store类中取得folder,再对folder进行操作--进入特定的folder,读取folder中的消息.<br />     Session session;<br />     Store store = null;<br />     Folder folder = null;<br />     Folder inboxfolder = null;<br />     <br />     Properties props = System.getProperties();<br />     props.setProperty("mail.pop3s.rsetbeforequit", "true");//这样读取邮件时服务器不会删除原有的邮件<br />     props.setProperty("mail.pop3.rsetbeforequit", "true");<br />     session = Session.getInstance(props, null);</p><p>     store = session.getStore("pop3");//通过"pop3"得到适当的provider<br />     store.connect(emailserver, emailuser, emailpassword);<br />     folder = store.getDefaultFolder();//得到默认的顶级文件夹<br />  每一Folder可以包含很多其它的文件夹,通过getFolder方法来浏览特定文件夹。INBOX是邮件服务器表示的主文件夹保留的名称,pop3和imap存储都会提供一个INBOX文件夹.<br />     inboxfolder = folder.getFolder("INBOX");<br />     inboxfolder.open(Folder.READ_ONLY);//只读模式<br />     Message[] msgs = inboxfolder.getMessages();<br />  需要注意的是,此时真正的消息对象并没有存储到数组(msgs)中,数组保存的只是这些消息对象的引用,只有在调用了具体的Message.getXX()方法时,程序才会再次连接服务器并取得真正的结果.如果要进行对邮件的筛选工作,不停的调用每个消息对象的getXX方法无疑会影响性能.因此我们可以用FetchProfile类来预先抓取感兴趣的部分内容(如各表头内容),这就不需要每次调用getXX方法时都再连接服务器了.<br />     FetchProfile fp = new FetchProfile();<br />     fp.add("Subject");//即只读取主题信息<br />     inboxfolder.fetch(msgs, fp);//预读取每个消息的主题<br />     for (int j = 0 ;j &lt;msgs.length; j++) {<br />        if (msgs[j].getSubject().startsWith("^_^")) {//只对标题为"^_^"的邮件进行操作<br />          .......<br />        }<br />  接下来,就可以调用Message的各种方法对邮件进行操作了.对不同格式的邮件,具体的操作当然也略微不同.一个做法是对每个具体的BodyPart进行操作,通过下列的递归方法可以获得每个BodyPart的引用<br />     private void extractPart(final Part part) throws MessagingException,IOException {<br />       if(part.getContent() instanceof Multipart) {<br />           Multipart mp=(Multipart)part.getContent();<br />           for (int i = 0; i &lt; mp.getCount(); i++) {<br />               extractPart(mp.getBodyPart(i));<br />           }<br />      return;<br />    }<br />  Part的getContentType方法可以为我们对其采取何种方法处理提供依据<br />     part.getContentType().startsWith("text/plain").....<br />  如果是以"text/plain"或者"text/html"开头,通常我们可以直接取出其内容<br />    bodytext = (String) part.getContent();<br />  如果两者都不是,我们将其视之为附件,通过IO流来读取:<br />      InputStream in = part.getInputStream();//读取part中的附件<br />      ByteArrayOutputStream bos = new ByteArrayOutputStream();</p><p>      byte[] buffer = new byte[8192];<br />      int count = 0;<br />      while ( (count = in.read(buffer)) &gt;= 0) {<br />        bos.write(buffer, 0, count);<br />      }<br />      in.close();<br />  接下来,就可以对流进行操作了.<br />  那么,关于Javamail的研究也就进行到这儿了.</p><p>参考文献:<br />  DJ Walker-Morgan          Getting the mail in: receiving in JavaMail<br />                                     Sending email in Java: There's more than one way<br />  赵强,乔新亮                   J2EE应用开发</p><img src ="http://www.blogjava.net/dyerac/aggbug/61395.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-08-02 21:09 <a href="http://www.blogjava.net/dyerac/archive/2006/08/02/61395.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaMail的乱码问题</title><link>http://www.blogjava.net/dyerac/archive/2006/08/01/61255.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Tue, 01 Aug 2006 15:05:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/08/01/61255.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/61255.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/08/01/61255.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/61255.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/61255.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天需要用javamail自动发邮件,结果测试结果一看,发现邮件发是发出去了,就是有一大堆的乱码,这是郁闷上网查了下,其实就是多设置一个小地方就可以咯,呵呵  看来自己功夫还不到家哦,要多多练习  package email;import java.io.File;import java.io.FileNotFoundException;import java.util.Properties;im...&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/08/01/61255.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/61255.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-08-01 23:05 <a href="http://www.blogjava.net/dyerac/archive/2006/08/01/61255.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>google web toolkit 试用小记</title><link>http://www.blogjava.net/dyerac/archive/2006/07/29/60749.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Sat, 29 Jul 2006 06:49:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/07/29/60749.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/60749.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/07/29/60749.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/60749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/60749.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       <br>      ajax现在的应用也很广泛了,其中可能用的最多,也几乎会在每本介绍ajax的书上出现的案例,大概就是关于用户注册时对用户名的检验.因此我也选中用gwt完成类似的功能.考虑到demo的简易性,具体的功能缩减如下:<br>      在输入框中输入用户名后,将鼠标点离输入框, 程序将调用后台servlet自动检验输入信息.如果输入内容为空,则提示错误信息;如果输入信息为dyerac,则提示该用户已注册(本来应该是先检验数据库看用户名是否已经存在,为了简便我省去了这一步,直接用dyerac替代);如果都不是,则显示出欢迎信息.<br>     同样,你也可以直接点击"test ajax"按键手工进行检验,检验原则和前面相同<br> &nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/07/29/60749.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/60749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-07-29 14:49 <a href="http://www.blogjava.net/dyerac/archive/2006/07/29/60749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Look And Feel打造绚丽的界面外观！</title><link>http://www.blogjava.net/dyerac/archive/2006/04/03/38986.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Mon, 03 Apr 2006 10:18:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/04/03/38986.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/38986.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/04/03/38986.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/38986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/38986.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 虽然我们知道，一个桌面应用程序的好坏，和它的性能，功能有着很大关系，<br>然而，对于大多数坐在电脑前的用户而言，他们的标准往往是: 绚丽的外观<br>MVC设计下的的SWING自然没有忽视这一点,通过对UIManager的设置,和第三方的类库<br>我们可以很容易的改变应用程序的外观<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/04/03/38986.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/38986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-04-03 18:18 <a href="http://www.blogjava.net/dyerac/archive/2006/04/03/38986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用java打造任意形状窗口和透明窗口</title><link>http://www.blogjava.net/dyerac/archive/2006/04/03/38984.html</link><dc:creator>dyerac in java...</dc:creator><author>dyerac in java...</author><pubDate>Mon, 03 Apr 2006 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/dyerac/archive/2006/04/03/38984.html</guid><wfw:comment>http://www.blogjava.net/dyerac/comments/38984.html</wfw:comment><comments>http://www.blogjava.net/dyerac/archive/2006/04/03/38984.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/dyerac/comments/commentRss/38984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/dyerac/services/trackbacks/38984.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 图形界面开发对于Java来说并非它的长项，开发者经常会碰到各种各样的限制，比如，如何打造一款任意形状的窗口？如何可以透过窗口显示它覆盖下的内容？&nbsp;&nbsp;<a href='http://www.blogjava.net/dyerac/archive/2006/04/03/38984.html'>阅读全文</a><img src ="http://www.blogjava.net/dyerac/aggbug/38984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/dyerac/" target="_blank">dyerac in java...</a> 2006-04-03 18:15 <a href="http://www.blogjava.net/dyerac/archive/2006/04/03/38984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>