最开始的时候认为一个 app的程序 并不需要弄的太复杂.
mvc 上面就添加了一个 struts2 .就想直接做开发了.
但是最近 想学习 下 flex 的功能.
开始 研究 BlazeDS. 用spring 进行配置还是很方便的.
所以想把 spring 添加 到 app 上面..
大体上面 用 jdo + spring + BlazeDS 的方式去开发一个简单的 CRUD.
看了下 因为 用BlazeDS 可以使用AMF3( action Message Format )
AMF 是远程访问调用 RemoteObject的方式. 使用的是二进制.效率开发上面比 http 好点.
需要的jar 文件就两个.
spring2.0.6.jar
commons-logging-1.0.4.jar
因为没有用 hibernate的原因吧.其实这个spring的jar 如果就要IOC的可以下载一个小点的包.
然后启动.
成功.修改 配置文件.
<bean id="pmf" class="org.springframework.orm.jdo.LocalPersistenceManagerFactoryBean"> <property name="jdoProperties"> <props> <prop key="javax.jdo.PersistenceManagerFactoryClass">org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory</prop> <prop key="javax.jdo.option.ConnectionURL">appengine</prop> <prop key="javax.jdo.option.NontransactionalRead">true</prop> <prop key="javax.jdo.option.NontransactionalWrite">true</prop> <prop key="javax.jdo.option.RetainValues">true</prop> <prop key="datanucleus.appengine.autoCreateDatastoreTxns">true</prop> </props> </property> </bean>
添加一个spring的配置文件.
然后编写dao.
/** * 保存数据. */ public String saveSystemUser(SystemUser systemUser) { String isSuccess = "true"; PersistenceManager pm = getPersistenceManager(); try { if (systemUser.getId() == null) { systemUser.setCreateDate(new Date()); pm.makePersistent(systemUser); } else { SystemUser tempSystemUser = pm.getObjectById(SystemUser.class, systemUser.getId()); tempSystemUser.setLoginName(systemUser.getLoginName()); tempSystemUser.setPasswd(systemUser.getPasswd()); tempSystemUser.setName(systemUser.getName()); tempSystemUser.setPhone(systemUser.getPhone()); tempSystemUser.setEmail(systemUser.getEmail()); tempSystemUser.setIslock(systemUser.getIslock()); tempSystemUser.setLoginTimes(systemUser.getLoginTimes()); tempSystemUser.setLastLogin(systemUser.getLastLogin()); pm.makePersistent(tempSystemUser); } Query query = pm.newQuery("select count(id) from " + SystemUser.class.getName()); /** 强制转换成int */ System.out.println(Integer.parseInt(query.execute("Smith").toString())); } catch (Exception e) { isSuccess = "false"; e.printStackTrace(); } finally { pm.close(); } return "{success:\"" + isSuccess + "\"}"; }
<bean id="systemUserDAO" class="com.freewebsys.dao.SystemUserDAO"> <property name="persistenceManagerFactory"> <ref bean="pmf" /> </property> </bean>
配置 dao xml.
发现 在使用 dao的是 还是不可以 直接用 多个.getJdoTemplate()
在使用的时候 就报链接 被关闭.在每一个dao的方法里面 还是要自己去关闭链接.打开链接.
其实有的时候应该把 这个 jdo 换成 jpa 就好了.反正 google 两个都是支持的.
用jpa的应该比较多吧.
保存一个类.同时查询下数据库里面有多少条数据.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@page import="org.springframework.context.ApplicationContext"%> <%@page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@page import="com.freewebsys.dao.SystemUserDAO"%> <%@page import="com.freewebsys.jdo.SystemUser"%> <%@page import="java.util.Date"%><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% ApplicationContext applicationContext = WebApplicationContextUtils .getWebApplicationContext(session.getServletContext()); System.out.println("applicationContext:" + applicationContext); System.out.println("pmf:" + applicationContext.getBean("pmf")); SystemUserDAO systemUserDAO = (SystemUserDAO) applicationContext .getBean("systemUserDAO");//得到spring的dao. SystemUser systemUser = new SystemUser(); systemUser.setCreateDate(new Date()); systemUser.setLoginName("123456"); systemUser.setPasswd("1223"); systemUserDAO.saveSystemUser(systemUser);//执行保存. %> test success. </body> </html>
直接在页面上写一个测试.
数据插入成功.并且可以查询到总数.OK.
下面就是使用flex 结合 BlazeDS
附件是 几个类. 配置文件.和 jar .