Struts2,Spring,Struts2 JSON-plugin,JQueryAJAX on GAE

来源:互联网 发布:浏览器不能打开淘宝网 编辑:程序博客网 时间:2024/06/05 06:18

     建了第一个应用,简单了解了在gae上开发应用程序的一般规则,开发个有意思的应用就打算用框架开发,用单纯的servlet开发文件多了就难以管理了而且效率会很底,决定用框架,在网上看到这几篇文章一般都是用Struts +Spring,也看到过用pay这个框架的,有兴趣的可以上这个网站去看一下http://www.playframework.org/ , 以下就是转载的。

流行的SSH组合没有顺利落户GAE/J,不过没有关系,只是将Hibernate替换为JPA,其实大多数人在开发Hibernate也使用JPA的annotation,不会有多大影响。Struts 2.1 + Spring 2.5+ JPA,这样的配合很重,但是可扩展性比较强,而已是经典配合啦,没有什么可以说道的。这三者配合需要注意以下事项:
1 Struts 2.1,需要修正OGNL的安全检查问题
2 Spring,不要使用spring-all-in-one jar,主要是javax.naming等问题
3 JPA,目前使用JpaDaoSupport和JpaTemplate还有点小问题,最好不使用DaoSupport,改为手工创建JpaTemplate,同时考虑一下事务方面,这些就没有什么问题啦。

下面是实现

1. Struts2 in GAE

 请查看我之前的日志《GAE上使用Struts2》

 

2.Struts2 JSON-plugin

登陆http://code.google.com/p/jsonplugin/downloads/list

下载jsonplugin的jar,这里使用版本是jsonplugin-0.32.jar,最新版本0.33,

 以前见过0.7版本的,那个是旧版,不知道为什么版本号后来变成0.3,

而0.7版本兼容性不好,尤其对中文,会出现中文截断的问题,不要再用了.

json-lib是另一个ajax+ json解决方案,

采用jquery这个框架,用jsonplugin就可以了,不用担心类似ext的兼容性问题,

之前搞ext项目其实也比较好处理的,jsonplugin非常好用,简化代码.

这里Struts.xml有所改变

<package name="json" extends="json-default"> 

3. Struts2 Spring2整合

一般应用导入struts2-spring-plugin-2.0.11.2.jarspring.jar就可以

对于GAE,直接用spring.jar会报异常

根据需要,我们使用以下的jar


目前Struts2的稳定版本是2.1.6,将下面的来自Struts-2.1.6的发行包的几个包,引入你的GAE项目工程中:

  • commons-fileupload-1.2.1.jar
  • commons-io-1.3.2.jar
  • commons-logging-1.0.4.jar
  • commons-logging-api-1.1.jar
  • freemarker-2.3.13.jar
  • ognl-2.6.11.jar
  • struts2-core-2.1.6.jar
  • xwork-2.1.2.jar

 

 

 

 

配置struts.objectFactory属性值。

在struts.properties中设置struts.objectFactory属性值

<constant name="struts.objectFactory" value="spring"/>

 

配置Spring监听器。在web.xml文件中增加如下内容

<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>

 Spring配置文件。默认情况下,Spring配置文件为applicationContext.xml,该文件需要保存在Web应用的WEB-INF目录下。

而这里为方便管理配置web.xml加入如下代码,从而使Spring的ApplicationContext通过匹配所给定模式的文件来初始化对象:

 

<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:com/jun/conf/spring/applicationContext-*.xml </param-value> </context-param>

 

之后遇到javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found 这样的错误,我用的是jdk 1.5的,换成1.6的就好了。

java.lang.NoClassDefFoundError: org/apache/xml/serializer/TreeWalker

把项目先备份删除了再重新建一个,不要多引入一个jar.否则会报错。

java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 加入commons-logging-api-1.1.jar

 

javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found

导入下列包serializer.jar、xalan.jar、xercesImpl.jar和xml-apis.jar。

可到网上查一下,都有下载的,欢迎大家访问我的网站,现在还没做好http://webmnrs.appspot.com/

 要注意一下版本问题:struts 2.1与1.0有很大的不同