javawebservice?WebService和HTTPService的区别
一、JavaWeb程序如何获取客户端IP
我是Allen一枚JAVA程序员
这个算是比较基础的问题。
JAVAWEB,我们以servlet为例,回答如何获取客户端IP,大部分的Javaweb程序均是基于此,例如springmvc,springboot。
首先我们知道javaweb客户端与服务端的交互一般是使用HTTP/HTTPS协议,而HTTP/HTTPS是基于TCP/IP协议的,既然是基于此协议,服务端是一定有办法获取客户端请求的IP和PORT的。而一般来说,servlet请求一般格式是这样的(未封装),使用简单的Springboot程序演示。
包含一个servlet请求,接下来我们看下这个请求,是否为我们封装了需要的客户端信息,一般来说我们客户端用remote表示。查看HttpServletRequest源码,查看其方法,有如下方法:
从名字上来看,分别是获取客户端地址,获取客户端主机(名称),获取客户端端口,以及获取客户端用户,废话不多说,直接上测试代码:
一般本机测试会出现因为ip回环问题,导致ip都是0.0.0.0,测试不出效果,我们打包放在XX云服务器上,或者在自己的虚拟机上都可以运行测试。
访问默认端口8080,可以看到如下信息,ip,port均是如此:
这样,应该知道如何获取客户端IP了吧?有问题请留言,欢迎关注本头条号,以及相关微信号zhd5986。
二、WebService和HTTPService的区别
1.基于不同协议:HTTPService基于http协议,而WebService基于soap协议
2.处理数据效率不同:HTTPService效率较高,WebService能处理较复杂的数据类型
3.跨域的处理:HttpService方式不能处理跨域,如果调用一个其它应用的服务就要用webService
三、webservice接口和restful接口哪个更好
REST是一种架构风格,其核心是面向资源,遵循CRUD原则,这个原则告诉我们对于资源只需要4种行为,分别是:创建,获取,更新和删除,并且这些资源执行的操作时通过HTTP协议规定的,而WebService底层是SOAP协议,核心是面向活动,有严格的规范和标准,包括安全,事务等方面。
那么我们是使用RESTful还是WebService就需要考虑资源本身的,看资源本身是那种简单的类似增删改查的业务操作,还是那种比较复杂,如转账,事务处理等。其次是看是否有严格的规范和标准的,而且有多个业务系统集成和开发的时候,我们使用SOAP协议就比较优势,如果是简单的数据操作,无事务处理,开发和调用比较简单的话使用REST架构风格比较有优势,较为复杂的面向活动的服务,我们使用REST意义不大。