工作-2017.08.13-周记总结篇(三)

本周的在工作上的主要内容还是继续熟悉,后期项目中要用到的技术些。总体来说,还只是处在了解和实践Demo的程度上。好的是,下周就会进入到正式的项目中。正好能对下述说明内容做一个检验。
WebService部分
在用CXF的wsdl2java工具时遇到访问限制的错误

这里出现这样的错误主要是因为jdk8上本身对这块就有一个bug,要解决的办法即是
Create a file named jaxp.properties (if it doesn't exist) under /path/to/jdk1.8.0/jre/lib and then write this line in it:
javax.xml.accessExternalSchema = all
更多详细内容:
用CXF中的wsdl2java工具时抛出SAXParseException,提示accessExternalSchema属性设置的限制而不允许file访问-CSDN论坛
http://bbs.csdn.net/topics/390899440
熟悉基于cxf的RESTful风格接口的webservice的定义
什么叫做基于cxf的RESTful风格的webservice
吗?
书面解释为:
Apache CXF是一个开源的Service框架,可以用于简化用户的service开发,基于CXF开发的应用可提供SOAP、XML/HTTP、RESTFULHTTP或CORBA等服务。CXF底层页可以使用不同的传输协议,包括HTTP、JMS或JBI等。
CXF支持web service的两种开发模式:①规则(contract)优先的开发模式,即通过编写WSDL来开发web service;②代码优先的开发模式,即通过编写java代码来开发webservice.
我的理解:
角色说明:
WebService---》一条小吃街
RESTful风格接口---》各式各样的店铺门面
CXF----》小吃街对外开放的大道。
情景解释:
听说在A地有条小吃街(WebService),各种零食应有尽有(方法灵活),一定能让你大饱口福(满足业务需求)。那问题来了,怎么去呢??走B路去呀,B路为了让小吃街更好的发展,道路设计的平坦又宽敞,开车特别爽。不过,考虑到安全因素,在这条道上得限速。(不同的车型代表着不同的请求方式,它们都要遵循一定的规则协议,这些就是CXF干的)。等你到了目的地后,你可以选择走a小街,b小街,c小街。。。这些街道的一个共同特点就是都能找着吃的,只是方式不一样罢了,依据不同人的口味爱好,自有不一样的店铺(RESTful风格的店面,让你找起来更方便。提供的不同方法,为你挑剔的味蕾提供最优质,准确的服务(也即不同的访问请求))。它们相互协作,和睦共处,小吃街也越发的火爆和为人称道!
正确理解WebService中SOAP和HttP两种协议的联系和区别
WebService里分SOAP,Http两种访问方式??
还是说它一般都是用http的访问形式,只是用SOAP协议作为保障?
我的理解:SOAP本身就是一种协议,http是一种访问的方式(比如localhost:8080/xxxx这种),SOAP协议只是为了为这种调用后台接口的请求做一些规范上的约定而已。
      关于SOAP和HTTP
它俩其实都算得上是协议。作为请求方式来定义时,二者还是有点区别。
SOAP,简单对象访问协议。作为请求时,就是SOAP请求,一般会同wsdl结合起来使用。大致的过程是,编写接口和实现类,通过配置文件将其部署到tomcat服务器上。然后查看能否正确的浏览器中访问到wsdl,跟着再用wsdl2java的工具生成相应的客户端类,在客户端中用get方法port接口获得对应的方法工厂,调用方法,传入参数后,就能直接访问了
HTTP请求,就是RESTful风格接口那种。同样也是先得启动相应的服务器,暴露接口后,在客户端(由Java程序创建的那种)或者浏览器中去访问。
 
Web.xml配置文件中url-pattern标签和load-on-starup标签的用法和作用

<load-on-startup>1</load-on-startup>
以下内容摘自:
http://www.blogjava.net/xzclog/archive/2011/09/29/359789.html
1)load-on-startup元素标记容器用于说明是否需要在启动的时候就加载这个servlet(实例化并调用其init()方法)。
2)它的值必须是一个整数,表示servlet应该被载入的顺序
2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
3)当值小于0或者没有指定时,则表示容器在该servlet被选择时(即被用到的时候)才会去加载。
4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。
5)当值相同时,容器就会自己选择顺序来加载。
所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。
在这里,容器Spring要在程序启动之初就得去加载这个Servlet,这样才能在启动后跳转到CXF默认的service展示页面中

<url-pattern>/*</url-pattern>,这里的/*又是什么意思呢?
 
http://www.cnblogs.com/keryang/p/5151632.html
Tomcat之web.xml中的<url-pattern>标签 - 一杨 - 博客园 
当我们在浏览器的地址栏里输入http://localhost:8080/we/index时[假设我部署在webapps目录下的项目名为we]
就会匹配到我们指定的<url-pattern>中,即/index然后一步一步找到对应的<servlet-class>
那我们输入的URL:http://localhost:8080/we/index又是如何与<url-pattern>中的/index匹配的呢?
首先我们要知道URL的组成
http://localhost:8080    我们可以理解为是我们的服务器地址,而该地址之后的部分我们统称为:RequestURI
RequestURI是我们需要重点注意的部分,其又可以分解为几部分
/we  是我们的ServletConext的上下文地址,我们称为ServletContext Path,可以简单理解为部署项目时的webapps目录下的项目名
/index  是我们的Servlet的地址,我们称为Servlet Path,这里就是需要与我们的<url-pattern>匹配的内容
注:在/index后边我们还可以跟其他的信息,例如:/index?name=admin&pass=admin  这是其中一种明文表示的方式
标签<url-pattern>中*的使用
我们知道在写<url-pattern>时有一种通配符的使用写法,即*
1.当我使用<url-pattern>/*</url-pattern>时,我们可以匹配所有的请求,即所有的请求都会经过该标签对应的Servlet
此时就需要注意静态资源的请求,因为当我们使用http://localhost:8080/we/login.html时,依然会匹配该Servlet,
而很多静态资源其实是不需要经过Servlet的,例如:js,css,html,jsp,img等静态资源文件,此时就需要在该Servlet中对静态资源做特殊处理
2.如果配有如下两个<url-pattern>标签时,URL地址为http://localhost:8080/we/index时又是如何匹配的呢?
<url-pattern>/index</url-pattern>
<url-pattern>/*</url-pattern>
上边我们已经说过,/*可以匹配所有的请求,而/index也可以匹配我们的URL地址,此时URL地址会自动且优先的进行精确匹配,即/index,
且只匹配一次,也就是说一旦匹配到一个Servlet即执行该Servlet不再对其他Servlet进行匹配,
当我们输入一个http://localhost:8080/we/login时,由于此时匹配不到/login所以只能匹配/*了
3.在Servlet Path部分我们还可以使用更精确的匹配,例如:
<url-pattern>/index/login</url-pattern>匹配http://localhost:8080/we/index/login
<url-pattern>/index/logout</url-pattern>匹配http://localhost:8080/we/index/logout
此时/index/login和/index/logout才是我们的Servlet Path
 4.我们可以通过使用<url-pattern>*.do</url-pattern>来过滤请求,
这样如果我们在页面中的请求中添加后缀名.do就可以避免对静态资源的过滤了,也就不需要对静态资源做特殊处理了
简单来说,这个标签就是一个路标兼守门人,一个请求发过来,会被Servlet承接。接下来它该怎么走呢??就由这个url映射的servlet去处理。*的意思代表统配,即所有的请求都能从这儿过。在实际的应用中,因为需求的不同,会对不同的请求作过滤,以提升处理请求的效率。不过呢,/*和/对于servlet而言虽然方便,但也是‘够呛’,必进要承载比较大的‘流量’啊。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值