欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入
构建文件上传处理的 servlet
利用 apache 的 commons 的文件上传的库,该 servlet 将上传的内容解析成 File 对象。
图 9. Servlet 模型
持久化改文件
应为 File 类已经添加了 JDO 需要的注释,如下。
@PersistenceCapable(identityType = IdentityType.APPLICATION)public class File {@PrimaryKey@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)private Key key;@Persistentprivate String username;@Persistentprivate String useremail;@Persistentprivate Date uploadDate;@Persistentprivate String filename;//could be a filename or a url…@Persistentprivate String description;//could be a filename or a url…@Persistentprivate String mimeType;//pdf,ppt, chm etc. @Persistentprivate com.google.appengine.api.datastore.Blob file;@Persistentprivate Set<Key> tags = new HashSet<Key>();// associated tags
利用 JDO 的规范提供的 API,可以持久化该对象到 Google 的 App Engine 的存储设施上。
PersistenceManager pm = PMF.get().getPersistenceManager();try {pm.makePersistent(file);} finally {pm.close();}
注意,这里需要首先在在项目的 classpath 的 META-INF 目录下有 jdoconfig.xml,其内容如下。
<?xml version=”1.0″ encoding=”utf-8″?><jdoconfig xmlns=”http://java.sun.com/xml/ns/jdo/jdoconfig”xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”xsi:noNamespaceSchemaLocation=”http://java.sun.com/xml/ns/jdo/jdoconfig”><persistence-manager-factory name=”transactions-optional”><property name=”javax.jdo.PersistenceManagerFactoryClass”value=”org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory”/><property name=”javax.jdo.option.ConnectionURL” value=”appengine”/><property name=”javax.jdo.option.NontransactionalRead” value=”true”/><property name=”javax.jdo.option.NontransactionalWrite” value=”true”/><property name=”javax.jdo.option.RetainValues” value=”true”/><property name=”datanucleus.appengine.autoCreateDatastoreTxns” value=”true”/></persistence-manager-factory></jdoconfig>
本文介绍了云计算领域的一个重要厂商 Google 的 Appengine for Java 的开发平台。通过一个实际的例子讲述了如何使用该平台开发 Web 应用。