标签:
这些天由于任务需要,又研究了一下servlet,因为以前学习过客户端和服务器通过JSON串传输数据,知道可以在servlet中查询数据库,再将数据组装成JSON串发送给客户端,让客户端解析数据。但是这次由于涉及到客户端上传数据,经过servlet处理,然后存入数据库中。这样就不知道怎么处理了。
在实践过程发现,如果在客户端将数据组装成JSON串,在发送给servlet接收,用不了JSON的jar包(目测是需要导包的,因为servlet是在一个java工程中写的,JSON for java的包蛮难找的- - ),想解析就碰到问题了。
因为比较懒^^,所以想如果客户端发送List<?>数据(?号可以表示某个javabean),servlet能接收到,然后通过getXXX()的方法获取数据该多好。。(感觉挺不错的样子)然后就开始找资料了…不知道是不是公司的网络毕竟废,限制很多的原因,貌似没找到啥相关的资料,只看到有个发送List<String> 的例子,和预想中的自定义javabean还是有点差距。好在经过不懈的努力,最后终于成功了.废话了一堆,以下开始写流程:
1. 首先写一个自定义的JavaBean,以UserInfo.java为例,需要实现对象序列化的接口,因为之后输出流对象需要实现输出可序列化的对象。不这样的话,后续时发送时会报异常。
1. 为了让客户端引用的JavaBean包名和servlet引用的一致,请右键点击UserInfo.java选择Export----java---JAR file-----选好导出的路径然后点finish,没错,我们这里选择将它打包,这是在LZ纠结了几个小时后,才解决的一个问题。之前servlet端一直提示ClassNotFoundException,找不到这个bean类,由于没仔细看Log,还一直以为是servlet端的引用问题,后来才发现,因为在客户端工程中这个类的路径是xl.java.bean.UserInfo.java,而我的servlet是在另外一个工程中写的,相同的UserInfo.java路径不同,在servlet中接收到的List<UserInfo>一直提示找不到UserInfo这个类,纠结的….打包完全是因为水平不行..
(最新发现,可以不用打包,只要在WEB-INF \classes中建立文件夹xl\java\bean即可,然后将UserInfo放入bean文件夹内,通过javac UserInfo.java将它编译成Class文件就可以了,也就是说,包名一样就行- -)
好吧 让我们跳过乱七八糟的第2步,进行第三步好了。。
3. 编写客户端模拟发送数据的类SendData.java。中间一大段的连接处理,具体解释可参考http://blog.csdn.net/wlzf6296149/article/details/7998641 。
4. 编写TestServlet.java类,并把编写完成的类,放在E:\Tomcat 7.0\webapps\test\WEB-INF\classes路径下,同时打开TestServlet.java类,把包名删了,如下绿色字体部分,防止出现莫名其妙的错误- -然后通过javac编译。
5. 运行SendData.java文件,可看到控制台输出,根据前面的设定我们知道,客户端和服务端已经建立连接,并且数据成功发送给了服务端,然后我们E:\Tomcat 7.0\logs下的stdout_20120920.log(反正目录下最后一个文件),查看Tomcat的打印信息,如下图
最后说明下,不知道以这种形式发送数据的效率怎么样,水平有限,感觉有点用,所以写篇文章记录下,如果大家对如何在android端通过servlet访问MySql有疑问可以看下http://blog.csdn.net/wlzf6296149/article/details/7309971 比较早写的一篇文章,应该能解决一些问题吧=. =
转自:http://blog.csdn.net/wlzf6296149/article/details/8001433
关于servlet服务端接收客户端发送的List<?>数据的问题
标签:
原文地址:http://www.cnblogs.com/leo04551/p/4763966.html