摘要: 最近刚完成一个任务-付款提醒邮件的发送,对于java邮件的发送有了更深刻的认识,的确java提供的邮件发送机制的确让邮件发送这个问题变得灵活而又简单。并且由于项目组其他人负责了短信的发送,巧的是这个邮件发送的借口与短信发送的借口都被封装到了消息发送的借口,我也顺便学习了一下短信发送的原理,呵呵,算是一箭双雕吧。 那先来说说邮件发送。按照按接口编程的习惯,当然先要定义一个邮件发送的接口,再实现其接口,完成邮件发送Service层的代码。这个顺序我想大家没什么反对意见吧。 首先咱们先定义一个消息发送接口,它是邮件发送与短信发送的上层接口。 /** * 功能: 系统消息发送服务 <p> 阅读全文
posted @ 2010-10-17 11:35 杨超路飞 阅读(1373) 评论(0) 推荐(0) 编辑
摘要: 看了java私塾的中级视频,感觉很全面,总结整理出了一些Eclipse快捷键,希望对有用的朋友有所帮助:Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性Shift+Enter 在当前行的下 阅读全文
posted @ 2010-10-09 13:21 杨超路飞 阅读(166) 评论(0) 推荐(0) 编辑
摘要: string tokenizer 类允许应用程序将字符串分解为标记。tokenization 方法比 StreamTokenizer 类所使用的方法更简单。StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释。 可以在创建时指定,也可以根据每个标记来指定分隔符(分隔标记的字符)集。StringTokenizer 的实例有两种行为方式,这取决于它在创建时使用的 returnDelims 标志的值是 true 还是 false: 如果标志为 false,则分隔符字符用来分隔标记。标记是连续字符(不是分隔符)的最大序列。 如果标志为 true,则认为那些分隔符 阅读全文
posted @ 2010-10-09 10:26 杨超路飞 阅读(522) 评论(0) 推荐(0) 编辑
摘要: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gbk& 阅读全文
posted @ 2010-09-29 16:47 杨超路飞 阅读(993) 评论(0) 推荐(0) 编辑
摘要: 在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作。 使用ibatis的selectKey就可以得到sequence的值,同时也会将值返回。不过对于不同的数据库有不同的操作方式。 对于oracle: <insert id="insertUser" parameterClass="ibatis.User"> <selectKey resultClass="long" keyProperty="id&q 阅读全文
posted @ 2010-09-28 09:59 杨超路飞 阅读(5233) 评论(0) 推荐(1) 编辑
摘要: private int getWorkingDay(Calendar d1, Calendar d2) { int result = -1; if (d1.after(d2)) { // swap dates so that d1 is start and d2 is end java.util.Calendar swap = d1; d1 = d2; d2 = swap; } int betweendays = getDaysBetween(d1, d2); int charge_date = 0; int charge_start_date = 0;//开始日期的日期偏移量 int cha 阅读全文
posted @ 2010-09-20 16:06 杨超路飞 阅读(1236) 评论(0) 推荐(0) 编辑
摘要: sysdate是系统时间 xx.dd是从数据库表中取出的时间,执行结果取出所有当前系统时间在5个工作日以后的结果集。select * from tableNamewhere (trunc(sysdate -x.dd) - ((case WHEN (8 - to_number(to_char(x.dd, 'D'))) > trunc(sysdate - x.dd) + 1 THEN 0 ELSE trunc((trunc(sysdate - x.dd) - (8 - to_number(to_char(x.dd, 'D')))) / 7) + 1 END) 阅读全文
posted @ 2010-09-20 16:04 杨超路飞 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 今天 搭建Spring+Ibatis框架碰到了很多问题,首先就是页面的值如何传入后台,尽管是个菜鸟级问题,但我是新手嘛,就拿登陆页面举例好了。登陆页面login.jsp:<body><fieldset><legend>登录</legend><form:form commandName="account"> <form:hidden path="id" /> <ul> <li><form:label path="username"> 阅读全文
posted @ 2010-09-10 18:24 杨超路飞 阅读(325) 评论(0) 推荐(0) 编辑
摘要: Quartz是一个企业级的定时任务执行工具,使用起来也相当容易。但是也有点约束----每个作业必须实现Job接口。Spring早在1.0就对Quartz提供了支持。Spring AOP的强大功能可以将这个无聊的事情见鬼去吧。我们甚至可以将任何一个普通类的方法设定为定时执行的方法。并且在Spring初始化的自动启动定时器(不需要你去写Main方法),在Spring关闭的时候结束定时器的运行,一避免应用服务器都关闭了,定时器还在后台默默无闻“空转”。呵呵,下面就看个例子吧:目标:将一个普通的业务方法作为定时作业的方法通过Spring配置去执行。要开始使用 Quartz,需要用 Quartz API 阅读全文
posted @ 2010-09-03 10:59 杨超路飞 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 1. 於是先定義最大的view,並設定為目前佈局:RelativeLayout r_layout = new RelativeLayout(this);setContentView(r_layout)2. 接著定義第二層的TableLayout,並加入到r_layout 裡:TableLayout tableLayout = new TableLayout(this);r_layout.addView(tableLayout, new RelativeLayout.LayoutParams(WC, WC));3. 再定義第三層的TableRow,並加入到tableLayout 裡:TableR 阅读全文
posted @ 2010-09-01 15:10 杨超路飞 阅读(250) 评论(0) 推荐(0) 编辑