00:00
下面我们来看第三个问题,可以直接通过超链接去切换lock q,而不再依赖于浏览器语言设置的情况。我们还记得抓two是怎么干的吧?抓two实际上是搞了一个I18N的拦截器,对吧?他先回来获取请求参数所对应的lock,然后把这个lock放到session里面,那以后每一次的话呢,从session里面直接用这个lock就可以了。这样的话呢,就可以实现使用超链接去切换local q这样的一个效果,那VC的原理跟two的原理基本类似,我们先来看一下原理,然后我们来用最后的话呢,去跟踪这个源代码。原理在这儿。首先呢,它会获取name等于lock这个请求参数,然后解析为一个对象。取消。
01:00
再然后,诶。再然后。它会获取一个local,就什么呀,Local的一个解析器,这些步骤呢是由这个local change intercept完成的,然后我们会搞到我们会把这个lock q对象设置为session属性,然后再从session里边把这个log q给取出来,诶这些呢是由这个session local reserve完成的,最后应用程序就使用了这个local,看到了吧,这就是我们基本的运行原理回来。我们来看一下我们目前的情况,目前的情况的话呢,我先debug一下。Debug一下,然后我们找到我们的spring mvc。哎,我们在这块打上一个断点。这个不好用了是吧,不好用我们就不用它了,我们找到我们的这个。
02:00
Eclipse自带的浏览器,因为现在的话呢,我需要通过超链接去切换,所以说我也不用去设置那个语言情况了,是吧,我点一下好,这个时候呢,这个代码停住,我想看一下目前的。Part里边默认用的这个local reserve是谁?大家看一眼哈,Local reserve默认用的是哪个呀?叫accept hier local local reserve看一眼干什么用的过来。这个呢,实际上啊,它直接实现了这个local reserve这个接口是吧,解析的方式就是直接从request里边去解析local,看到了吧,我们需要把。里边里边默认这个accept local reserve替换为。我们的。Session,好的,我们首先的话呢,来配置一下这个配置文件,首先配置。
03:08
Session实际上是一个B吧,ID class。Sessionvo,好的,我们还需要配什么呀?我们还需要配一个拦截器。配置。Chang intercept,好的配置拦截器呢,用mvc intercepts,这里边可以直接来放bin。Class change intercept。
04:05
配好了下边的话呢,我们来搞页面,页面我们找到i180.jsp我们来配,呃,我们来加两个超链接。218N。问号lock等于。JNC。这个呢叫中文。L8N问号lock等于en_us这个叫英文。好,看一下效果。Debug吧。首先找一个。我们现在我们来看。
05:02
PSO,它这个里边的local reserve是谁?L开头的是吧。Local,看到了吧,已经改成了session local好了,过。我把这个点呢,我先去掉。不要他了,回来回来。诶,这里边的话呢,到了这个页面,我们现在我们来点一个中文,OK,中文点进去点回来中文英文切换了吧。点进去点回来,这样的话呢,就实现了这个中英文切换的效果,看到了吧。OK,说一下这个实现方式,实现方式呢,我们需要加超链接。超链接,这个超链接要求有一个lock q这样的一个请求参数,后边跟跟上这个语言国家代码就可以了,然后呢,在MVC里边来配置session跟。
06:09
Intercept就可以。好的,下面的话呢,我们来看一下这个代码是怎么走的,这个过程呢,这块我们已经解析了是吧,下面的话呢,来看一下这个代码是怎么走的,那么我们直接找到我们的。这个吧。Dispat t Dis OK,往下拉。我们直接去看我们的do dispatch方法。我们在得到。我们在这儿哈。在这个,呃,九百四十五行,我们会看到得到这个MV,然后呢,我们去。
07:02
渲染视图是在959行。点进来。渲染视图在这吧,OK,我们看到这块呢,它会来解析这个local看到了吗。它会解析这个local q,它解析这个Q呢,这个local就是从。解析器里边去解析的lock q里都是里边来解析这块的话呢,实际上就已经是使用了,对吧?好了我们再看之前的,之前的呢,我们应该先看谁啊,先看这个叫。Local change intercept control t local intercept,拿进来。往下翻,OK,它有一个pre handle方法,这个是什么时候掉的呢?叫pre handle方法,我们往前翻。找到那个dopa方法。
08:02
再往前是吧,OK,我们看在调我们的目标方法之前,会先来调这个pre handle方法,就这行调吧,939行,它会来要这个方法,这个方法呢,首先会来获取这个lock q对象,然后解析出我们的,嗯,找到lock q解析器。是吧,然后把我们的local q给到我们的local,点一下CTRLT。Abstract lock。Contact进来,再点CTRLT,找到了session local,看到了吧,设置,首先我要得到这个。得到之后呢,我把它设置到session里边,看见了吗?设置到session里边我点进来。这块进行设置的OK,以上的话呢,就是整个的流程我们来走一下。
09:03
中文。好,过来我们看,哎,我在调目标handle之前,先需要来调这个pre handle方法,这个是谁的呀?是拦截器的,我们往下看一眼,看这个lock q,这不就是JCH吗?这个per是谁呀?Lock q,我们传的那个lock q,我们为什么传这个lock呢?这块定义好的点进来。再减就是它嘛,对吧。好的,然后呢,他将得到我们的。Local解析器,看是谁啊,我们配置那个叫session local session local吧,OK,再往后走。好了,这个时候呢,得到这个应该哪个啊,能看到吗。啊,这是CN所对应的local,注意哈,这已经是个local对象了,看见了吧,然后把它放到30里边。
10:01
好了这个就可以了,这样的话呢,就这一圈就完成了,这个呢,已经去掉了这个目标方法。过来好,打了一个中文的用户名,然后渲染示图,这个时候我们需要从law q reserve里边把这个lock q给获取出来,那这个lock当然是ZCN所对应的这个lock q,那整个这个过程就结束了,这就是我们整个的这个运行原理,那实际上我这个图呢,就是根据那个源码画出来的。好的,嗯,我们要求大家会通过超链接的方式去切换lock,至于说这个原理呢,你清楚就清楚,你不清楚的话暂时放一放也可以。
我来说两句