Flex 做表现层,需要Java提供数据
这个是自然也必然的选择
(当然可以用PHP,但是...觉得合适吗?)
Java端如何写才好?
下面是我的写法:
UserDao层,就是Dao,数据访问对象
/**.
* 用户实体交互对象
* @author eMavaj
* 2010-5-28
*/
public class UserDao {
/**日志对象.*/
private static Log log = LogFactory.getLog(UserDao.class);
/**.
* 根据用户名密码得到用户实体
* @param username 用户名
* @param password 密码
* @return 当前用户
*/
public User loadUserByUsernameAndPassword(final String username, final String password) {
/**得到结果集.*/
ResultSet rs = DataBaseUtil.getInstance().executeQuery(
"select * from t_user as u where u.username = ? and u.password = ?",
new Object[]{username, password});
User u = new User();
/**取第一条记录.*/
try {
rs.next();
u.setUsername(rs.getString("username_"));
u.setPassword(rs.getString("password_"));
u.setId(rs.getInt("id"));
u.setMailbox(rs.getString("mailbox_"));
u.setRegisterDate(rs.getDate("registerDate_"));
u.setEndDate(rs.getDate("endDate_"));
} catch (SQLException e) {
log.error("ResultSet游标错误,没有下一条记录");
e.printStackTrace();
}
return u;
}
/**.
* 取得所有用户对象
* @return 返回对象集合
*/
@SuppressWarnings("unchecked")
public ArrayList loadAllUsers() {
/**查询得到结果集.*/
ResultSet rs = DataBaseUtil.getInstance().executeQuery(
"select * from t_user as u", new Object[]{});
/**返回的集合.*/
ArrayList users = new ArrayList();
try {
while (rs.next()) {
users.add(new User(
rs.getInt("id"),
rs.getString("username_"),
rs.getString("password_"),
rs.getDate("registerDate_"),
rs.getString("mailbox_"),
rs.getDate("endDate_")));
}
} catch (SQLException e) {
log.error("ResultSet游标错误,没有下一条记录");
e.printStackTrace();
}
return users;
}
}
这一层是必不可少的,是和数据库交互的一层
上面的例子代码,有了2种返回
一种是对象,一种是集合
当这2中返回,到了Flex的时候,分别是Object 和 ArrayCollection
可以使用 dataField 进行绑定的所需要的地方
但是,Flex 不直接使用这一层的数据
而是再加入一层
Service层:
/**.
* 用户服务 Flex调用方法
* @author eMavaj
* 2010-5-28
*/
public class UserService {
/**用户实体操作对象.*/
private static UserDao userDao = new UserDao();
/**.
* 用户登录服务
* @param username 用户名
* @param password 密码
* @return 返回当前用户信息
*/
public User login(String username, String password) {
return userDao.loadUserByUsernameAndPassword(username, password);
}
/**.
* 取得所有用户实体
* @return 实体集合
*/
@SuppressWarnings("unchecked")
public ArrayList loadAllUsers() {
return userDao.loadAllUsers();
}
}
这一层,相当于公开的服务,展示了Java端可以给Flex远程调用的方法
这一层的原则只有一个,尽量简单
可以看到我上面的代码都是直接返回了Dao层的返回值,几乎没有什么逻辑
至于其它什么大道理,如何设计,由于篇幅有限,就不在这里写了
PS:
其实这个例子的Dao层,本应该是一个接口,然后再到实现类
而Service层持有的不是Dao层的具体类,而是Dao层的接口
这里直接写出了具体类,是为了简单起见
本文探讨了在Flex表现层中使用Java作为数据提供层的实现方式,包括Dao层和Service层的设计,以及如何通过数据绑定实现Flex与Java的交互。
547

被折叠的 条评论
为什么被折叠?



