blog.TangGaowei.com

Spring 让 Struts 更专注于控制业务流程

作者 Neot 写于 2007-12-24  | 764 次浏览

Struts 可实现 MVC(模型/视图/控制器) 模式,并且成功的将“视图”,即“表示层”分离出来。但它对“模型”,也就是“业务逻辑层”的分离还不够彻底。因为 Struts 直接在控制部分的 Action 里创建“业务逻辑”对象。这样做,不方便采用新的创建对象方法,而且,想替换原有的“业务逻辑”对象也必需修改 Action 的源代码才能实现。

Spring 采用“控制反转(IoC)”的设计模式,将“业务逻辑”对象的创建过程从 Action 里分离出来;Spring 还采用了“工厂模式”,让对象的创建可控制,实现了“业务逻辑”对象的可替换性。通过 Spring 的配制文件(applicationContext.xml) 很容易将创建好的“业务逻辑”对象传递给 Action ,因此,很容易替换原有的“业务逻辑”对象。这样,Struts 就能更专注于业务流程的控制。

Struts 用于控制业务流程,Spring 用于管理业务逻辑,这样分工明确,使系统的更好的实现松散耦合,提高了系统的灵活性和可扩展性。

[ 标签: j2ee, java, spring, struts ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/spring-struts.html ]

怎样判断ResultSet的字段是否为空(null)

作者 Neot 写于 2006-11-28  | 758 次浏览

ResultSet对象中,当字段为空时,用getInt()方法将返回0,而不会是null。

要判断字段值是否为空,可使用getString()方法。

[ 标签: java ]
[ 固定链接:http://blog.tanggaowei.com/2006/11/resultsetnull-2.html ]

怎样判断ResultSet的字段是否为空(null)

作者 Neot 写于 2006-11-27  | 991 次浏览

ResultSet对象中,当字段为空时,用getInt()方法将返回0,而不会是null。

要判断字段值是否为空,可使用getString()方法。

[ 标签: java ]
[ 固定链接:http://blog.tanggaowei.com/2006/11/resultsetnull.html ]

Linux下DateFormat的parse方法出现”ParseException”异常

作者 Neot 写于 2006-09-16  | 409 次浏览

  在windows下使用DateFormat的parse方法,将字符中转化为Date类型时,一切正常。可安装到Linux下,就出现了ParseException异常。代码如下:

public Date toDateTime(String str){
Date dt = new Date();

try{
DateFormat df;
df = DateFormat.getDateTimeInstance();
dt = df.parse(str);
}
catch(ParseException e){
System.err.println(e);
}
return dt;
}

我执行toDateTime(”2005-5-1 12:00:00″),在windows下正常,Linux下出现ParseException异常。看来是Linux下的DateFormat对象不认 识”2005-5-1 12:00:00″这种格式的字符串,所以转换不了(需进一步老确认)。

由于时间来不及,我赶紧换了另外一种方法。新的代码在Linux下运行正常。修改后的代码如下:

public Date toDate(String str){
Date dt = new Date();
String[] parts = str.split(”-”);

if(parts.length >= 3){
int years = Integer.parseInt(parts[0]);
int months = Integer.parseInt(parts[1]) - 1;
int days = Integer.parseInt(parts[2]);
int hours = 0;
int minutes = 0;
int seconds = 0;

GregorianCalendar gc = new GregorianCalendar(years,months,
days,hours,minutes,seconds);

dt = gc.getTime();
}
return dt;
}

我的日期字符串格式是”yyyy-MM-dd-HH-mm-ss”的,所以代码如上。要转化别的格式,截取字符中的时候会不一样。但,它的核心代码是 “GregorianCalendar gc = GregorianCalendar(years, months, days, hours, minutes, seconds);”。也就是用GregorianCalendar类来进行String到Date类型的转换。

[ 标签: java, linux ]
[ 固定链接:http://blog.tanggaowei.com/2006/09/linuxdateformatparseparseexception.html ]

Java中从Oracle里取出数据时,为什么提示“无效的列索引”

作者 Neot 写于 2006-07-18  | 1,099 次浏览

  第一次在Java中用JDBC连接Oracle数据库,连接通了,但是一个简单的SQL查询,却报告“无效的列索引”。

开始,我以为是Oracle里的表索引没有设置。于是,我给要查询的表添加了索引。但是,还是报同样的错。

记得,前段时间,我用JSP中用JDBC连接过Oracle数据库,SQL查询查出来过记录。只是当时用的数据表不同。于是,我又试着用与JSP中同样的代码,同样的数据表再测了一次。结果,还是不行。

没办法,只得请教一位公司里的JAVA高手,让她帮忙看一下。原来,是我取字段的时候,字段序号写错了。高手就是高手,一看就看出来了。

错误代码如下:

……
ResultSet rs = null;
try {
……
if (rs.first()) {
String col = rs.getString(0); // 错误代码处
}
}
}
……

完整的正确代码如下:

// 省略数据库连接部分

String sqlquery = “select * from users”;

PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sqlquery,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);

rs = ps.executeQuery();
if (rs.first()) {
String col = rs.getString(1); // 修改后的正确代码
}
}
} catch (SQLException se) {
throw se;
} catch (Exception ex) {
throw ex;
} finally {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
}

从上面的代码可以看出,ResultSet类型的getString(int index)方法,是以1开始的。我用的是0,所以出错了。

VB中数字以1开关,Java同C++一样,数字一般以0开始。而像这样突然在Java里面出现以1开始的情况,确实很难想到。因此,虽然只是一字之错,但我还是把它写了下来。

[ 标签: java, oracle ]
[ 固定链接:http://blog.tanggaowei.com/2006/07/javaoracle.html ]

订阅

 

手机访问

http://blog.tanggaowei.com/wap/

Google