当前位置:文档之家› java,http协议,接口

java,http协议,接口

竭诚为您提供优质文档/双击可除java,http协议,接口篇一:http接口2.客户端:通过httpinvoker代理向服务器端发送请求,远程调用服务接口的方法3.服务器端与客户端通信的数据需要序列化配置服务器端和客户端的步骤配置服务器端1.添加springjaR文件建议使用spring2+.jar版本2.创建服务接口3.创建服务接口的具体实现类4.公开服务配置客户端1.添加springjaR文件建议使用spring2+.jar版本2.创建服务接口3.访问服务实例讲解服务器端1.服务接口:ucservice.java它提供两项服务,查询用户信息和记录日志,如下:publicinterfaceucservice{publicuserinfogetuserinfobyname(stringusername);publicintrecordlog(stringusername,stringpoint,strin goperate,stringdesc);}说明:举这个列子是因为其比较有代表性,它将展示普通数据类型(int,long等)和复杂数据类型(dto等)的远程调用方式。

userinfo是一个普通的dto,代码如下:publicclassuserinfoimplementsserializable{privatestaticfinallongserialVersionuid=-69709675067 12260305l;/**用户名*/privatestringusername;/**电子邮箱*/privatestringemail;/**注册日期*/privatedateregistdate;publicstringgetusername(){returnusername;}publicvoidsetusername(stringusername){ername=username;}publicstringgetemail(){returnemail;}publicvoidsetemail(stringemail){this.email=email;}publicdategetRegistdate(){returnregistdate;}publicvoidsetRegistdate(dateregistdate){this.registdate=registdate;}}注意:因为是在网络间传输对象,所以需要将userinfo 实现serializable接口,并指定一个serialVersionuid(任意值即可,同时客户端也要有这个类,否则在客户端接收对象时会因为serialVersionuid不匹配而出现异常)回到ucservice.java,它提供了两个服务(在这里一个方法代表一个服务功能),我们需要具体的实现类来实现真正的服务2.实现类是ucserviceimpl.javapublicclassucserviceimplimplementsucservice{privatestaticloggerpointrecordlog=logger.getlogger( "pointrecordlog");privatestaticloggerlogger=logger.getlogger(ucservic eimpl.class);privateucFacadeucFacade;publicvoidsetucFacade(ucFacadeucFacade){this.ucFacade=ucFacade;}publicuserinfogetuserinfobyname(stringusername){ userinfouser=null;try{user=ucFacade.getuserinfodetail(username);logger.debug("getuserinfosuccessbyusername:"+userna me);}catch(throwablet){logger.error("getuserinfofailbyusername:"+username, t);}returnuser;}publicintrecordlog(stringusername,stringpoint,strin goperate,stringdesc){intresult=0;try{(username+"-"+point+"-"+operate+ "-"+desc);}catch(throwablet){result=-1;logger.error(t);}returnresult;}}说明:ucFacade是通过spring注入的一个数据查询类,因为它与httpinvoker没有直接关系,所以不进行介绍。

3.公开服务ucservice.java2web-inF/application-context.xml:将接口声明为httpinvoker服务class="org.springframework.remoting.httpinvoker.htt pinvokerserviceexporter">value="qin.baike.service.ucservice">说明:httpinvokerserviceexporter实际上是一个springmvc控制器,它处理客户端的请求并调用服务实现。

2web-inF/service-servlet.xml:httpinvokerserviceexporter实际上是一个springmvc控制器,所以需要为其提供springuRl处理器,这里我们使用simpleurlhandlermappingclass="org.springframework.web.servlet.handler.simp leurlhandlermapping">httpservice2web-inF/web.xml:配置spring监听及dispatcherservletcontextconfiglocation/web-inF/application-context.xmlorg.springframework.web.context.contextloaderlisten erserviceorg.springframework.web.servlet.dispatcherservlet1篇二:使用java控制http协议客户端应用.*;importjava.io.*;importjava.util.properties;importjava.util.enumeration;publicclasshttp{protectedsocketclient;protectedbufferedoutputstreamsender;protectedbufferedinputstreamreceiver;protectedbytearrayinputstreambytestream;protecteduRltarget;privateintresponsecode=-1;privatestringresponsemessage="";privatestringserverVersion="";privatepropertiesheader=newproperties();publichttp(){}publichttp(stringurl){get(url);}/*get方法根据uRl,会请求文件、数据库查询结果、程序运行结果等多种内容*/publicvoidget(stringurl){ try{checkhttp(url);openserver(target.gethost(),target.getport());stringcmd="get"+getuRlFormat(target)+"http/1.0\r\n"+getbaseheads()+"\r\n";sendmessage(cmd);receivemessage();}catch(protocolexceptionp){p.printstacktrace();return;}catch(unknownhostexceptione){e.printstacktrace();return;}catch(ioexceptioni)i.printstacktrace();return;}}/**head方法只请求uRl的元信息,不包括uRl本身。

若怀疑本机和服务器上的*文件相同,用这个方法检查最快捷有效。

*/publicvoidhead(stringurl){checkhttp(url);openserver(target.gethost(),target.getport());stringcmd="head"+getuRlFormat(target)+"http/1.0\r\n "+getbaseheads()+"\r\n";sendmessage(cmd);receivemessage();}catch(protocolexceptionp){p.printstacktrace();return;}catch(unknownhostexceptione){。

相关主题