今天看了看自己以前上传的资源,android客户端访问服务器登录实例被下载的次数还挺多的,下面有不少人评论说无法运行。我重新把项目下载下来运行了下,项目运行没什么问题。资源位置 :http://download.csdn.net/detail/xiaoliouc/4771028
需要注意的地方:
1、开发环境:使用的jdk1.6,tomcat7.0(如果使用tomcat6.0会报错,因为我在web.xml使用的servlet3.0规范,而不是2.5规范,导致tomcat6.0无法运行该项目),mysql5.5 ,eclipse
2、使用的ssh框架,strut2.3.4+spring3.1.1+hibernate 3.5.5 ,web浏览器可以直接访问。 而android访问服务器采用的json数据格式,hibernate3.5.5+spring3.1.1+servlet3.0注解 。以前参考的《疯狂android讲义》部分代码。
3、项目引入的jar包有点问题,ejb-persistence.jar不该导入,如果hibernate有一对多,会出现错误。当时没注意到这点
4、新建数据库名demo,修改db.properties的属性为自己数据库连接属性。
5、android端DemoClient需要修改HttpUtil文件
public static final String BASE_URL =
"http://192.168.1.60:9999/DemoServer/android/";把ip和端口修改成你服务器的。
6、如果android系统是4.0以上版本系统,可能会出现异常,因为当初写代码的时候没考虑,ui线程和网络连接线程放在了同一个里面,这种方式在4.0以前是可以的,4.0以后有问题,解决方式有2种,一种是在ui线程中另外开启一个线程来完成登陆的网络通讯功能,用handler来通知ui线程服务器返回的结果。第二种方式是在在oncreate里头增加如下代码:
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath()
.build());