00:00
在的话,我们让他清楚起来,哎,我们这里边,我们最核心的呢,就一个地方,是不就是这个就不就是这个配置文件啊,啊,我们来看一下这个配置文件啊,这个package我们已经讲到了,说structure to就是用这个package来组织模块的,比方说这个订单模块,诶我用一个package啊,用户模块我可能也用一个package,这个时候什么呢?把相关的一系列action放在一个package里边,是不是便于维护啊,比方说我想找这个客户管理的话,我上这个客户所对应的这个package里边来找。我想找这个这个这个呃,商品管理的话呢,我就去商品这里边去找,这不是很好吗?啊package,这个package刚才看大家遇到的,遇到的一个最大的问题就是忘写这个expense了啊,这个不写就不行,呃,通常情况下都需要继承这个stress default,这个stress default在哪定义呢?在。
01:10
T。For这个包在以for.xl文件中定义,OK这个文件啊,我们后边我们会经常看,所以说我们在整个这个根目录下来建来建这样的一个文件,下次的话呢,我就不用一次一次去找了哈。以点报告。扣ult a c CL a过来看看,这就是我们的,嗯,Stress default,这里边定义了什么?定义了结果的类型,Result结果类型,我们一会我们会说到这个结果类型啊,哎,定义了各种intercept,各种拦截器,而且定义了各种interceptte什么意思啊?
02:28
拦截气站有一个名字,这个名字就是我们来引用这个拦截气站的那个名好了,然后一顿定义是吧,往后往后翻。我们现在用的拦截气站叫default deck,为什么呀,这块写了是吧,默认的拦截基站是它,注意还有一个默认的class是它,好了再往上来,那我们这个package这块的话呢,还有一个地方可以说啊,它还可以来配一个属性叫name space,就什么呀,命名空间默认默认这个值就是它,好了,我现在我来写一个,比方说写个艾A。
03:16
保存我写了个艾特硅谷,那我这样写完之后的话呢,我们跑一下看我们这个程序会有什么变化吗。找一个。一样的好,我找他是不是不过不来了呀,啊,这个错误刚才同学可能也遇到了是吧,这是什么错误啊,他说我并没有为斜杠这个name space配置这样的一个action吧,因为我现在这个name space叫啥呀,不是这个就他是不就艾特硅谷了呀,于是艾硅谷就C来过来看这。
04:05
这就可以,这就是space,有了这个name space之后呢,我们可以在请求的时候啊,把这命名空间给它加上,大家看到了吧,默认这个值的话呢,加二也可以给这个值加上。一个namespace。前面的哈。这这大家看,如果我要是把这个name SP配为Java的话呢,我这块我就得得多加上一个Java,看懂这个意思了吧,这个属性是可选的,如果没给出的话呢,这个斜杠是默认值,那如果要是配一个非默认值的话,那我们在调用这个action的时候,就得把这个name space加到那个pass的前边。干这个用的复制过来,这是我们常用的一个属性。
05:09
这个属性是可选的。可选,如果没有给出结杠什么认知?一旦你给了一个默认值的话,那你要是再想调这个号里边的这个action,我们必须给它UI上边加上这个space,怎么加呀?在pass的前边加上这个name,加上之后的样子可能是个什么样子嘞?比方说HTTP括号的8080好斜杠,比方说哈。Hello word应该是啥呀,几个名,这叫啥呀?叫hoest pass吧,是吧,然后就是name space,然后是action name,然后点点action,或者是什么也不写这样一个东西,这就是这个叫in space,在s pass前边需要加上它,那我这个加上之后的话呢,就是这样一个效果好开age就这么多,然后我们来看这个action,这个action啊,哎,挺挺让我们意外的是吧,我这块的话呢,我配置了一个product save,我们知道这个product save跟谁对应啊,是不是跟一个somebody pass跟一个action请求的那个那个那个请求那个。
06:54
呃,搜这个pass,去掉扩展名,那个名对应啊,啊跟他对我们都已经知道了哈,跟他对,那问题是它怎么就自动的去这个地儿了呢?那实际上呢,这里边有几个默认的配置,默认的配置看这看这个ru default,打开找到最后一行,看一个什么呀,是不是有一个默认的类指向啊,默认类引用一个class叫action support ctrl shift t OK,好,源代码,嗯。
07:35
File文件就可以,我们找到Java open source2.3.15。打开好了就是什么呀,默认那个support,其中这里边呢,有一个方法叫CU,这个返回值是success,那这个呀,叫默认的使用的action是它,你看啊,那默认的类指向它,那于是的话呢,相当于这么写。
08:22
看相当于写成是class。它我把这个复制一下吧,默认的吗?你说C过来好,默认这么写还没完,那方法呢,方法名啊,也有一个默认值艾的X是这样的,然后我们说哎,里边其中。Name我们说完了哈,说class的默认值为,你要不配的话,默认值就是它,然后说method的默认值为,哎,是这么一个效果,好了,那于是的话呢,我们就会看到它确实是会来调这个方法返回一个什么呀,是不是返回一个success,哎,这么一个字符串返回返回一个success的话再来,这就说明里边应该有一个result,名字叫success,这说明result name的默认值就是success,然后我们来说说吧,来result怎么样,我们说啊,结果表示action。
09:54
方法执行后可能返回的一个。
10:07
结果,那我们这action是不是可能有很多个反馈的情况啊,所以一个action节点可能会有多个result子节点,OK,多个result子节点使用name来区分,就说这个name值啊是不一样的,好了,这个name是当时一个lo怎么样,它和action方法的返回值应看吧,这个返回值就叫success,于是啊,这个就叫success,那需要说一下这个默认值为,默认值为。
11:08
看到了吧,所以说我们开始的话呢,有一个最简的写法,我只写一个name,不写class,不写method这块也可以不写这个name吧,好了再继续,我们发现它是不是一个转发呀,它是通过转发的方式去的web infer下的这个文件,因为你重镜项的话是不是也过不来呀,重镜项到不了的哈,好了,这里边的话呢,我们还可以再写一个属性到。就什么叫结果类型知道。往上翻,在这个包里边我们写了很多啊,几个类型,默认就是pat,默认是转发,是不是还看到了这个direct?叫重新,像咱一会可以写一下试一下哈,好了,这个result还有一个属性叫不是叫太。
12:09
啊,表示结果的类型,表示结果的类型默认值为是什么意思啊,转发的那个结果。转发到结果好了,既然你转发的话呢,这样过去我们现在我们这样走瞧着哈,我写一个redirect。这样去他是怎么样,是不是重定向好,我们看看效果,跑起来过来。刷新是不是过不来了呀,重定项我是不是到不了这个外部音符下呀,所以说就是这么样一个效果呀,那默认值是转发,我再给它改回来C好再走。
13:16
什么情况?他说,没过来哦,我得先改回来。刷新哦,这是什么的问题了,是不是我们有个name space啊。爱的硅谷没问题吧,就是这样的一个道,这就可以了啊,这就是我们右提的一个属性叫T。那我们这个action搞定的话呢,我们再看这个就简单了哈,Name class method name,我这里边,我这个里边我是不是只省略了一个属性啊,Type吧,而我这个里边的话呢,我可以省略很多属性,比方说我可以省略class,可以省略method,可以省略这个name跟type,诶这就是整个这样的一个效果,还有一个地方呢,需要说一下,这个地方呢,在这儿。
14:21
大家一定会感到好奇是吧,我为什么在这个里边这些一个一个属性,大家看我这一个一个属性是不是就是对应着我表达那个请求参数了,怎么搞到的,那strong to帮我们搞到的,抓to帮我们把请求参数的那个值映射到当前的一个一个属性里边,好了,我们再看一下啊,我们找到input找它,哎,这里边叫product name product d product price这些当然要跟这里边那个方法一一对应,要不的话过不来好了啊,Strong to帮我们干的,具体是strong的,谁帮我们干的呢?
15:10
来我们再进一步的,我们再说一句啊,应该是stra to有一个拦截器,我们现在用的拦截器站呢,就它有一个拦截器叫。那这个拦截器帮我们获取请求参数,而且把请求参数付给了。一个B的对应的属性,那哪个B呢,是直站占顶的那个属性啊,直站占点那个对象啊,这个我们在后边讲源码的时候,讲运行原理的时候的话呢,我们再解释,大家暂时先知道这块就可以了。同学可能还会有一个疑虑,一个问题在哪呢?在哪啊,在这个details.jsp你会问这个这么写就太奇葩了吧,难道确实是在我们的这个预对象里边有这样有这样的一个一个的属性吗?哎,我写一个大家看一眼啊。
16:14
这个为例一定不是在三里边带的话呢,也是request里边request.that attribute from好了,找一个。我加上一个标识,确定我修改了好了,E in特。1200。Summit。好用吧,而且的确是在请求域里边,这个时候我们再解释,再进一步说,那你会相信说我真的是在请求域里边放了这么四个属性吗?你会这么想吗?
17:05
那即使是放的话,也应该是放一个对象吧。他不好放这四个属性吧,好了,那于是再往前去追溯,那就想这么样有点不靠谱是吧,那于是这个request还是我当时翻开的服务器创建那个request吗。保唇再走一步走,大家看这个request是不是to重写的这个request呀,啊,这个里边的CTRLCCTRLCTV,找一个关联源代码。Java open source stresss2.3.15走好了,这个大家看,哎,这就是我们这个request,那往下翻,它是不是重写了这个get的方法呀,看见了吗?重写了好再往下翻,那实际上呢,这个值来源于哪呀?这个值来源于往下翻,这个值来源于指站。
18:19
这是我们,呃,明天讲的时候要讲的实战是抓two里边非常重要的一个概念,非常重要的一个小组件,那么实际上确实存储的是一个对象,它是从那个对象里边获取的一个一个的属性值啊,这是也是我们的一个疑虑是吧,但我们今天的话呢,这个没有办法展开,那前边配置文件里边的我们基本上都说清楚。还乱码,还有个什么,刚才乱码,你刚才乱码了,页写写,呃页面上页面上写个中文,就是不是页面上写中文吗?是在哪个方写写中文呢,这半写中文吧,是吧,啊好说我们就说上归谷来。
19:11
我这个不是乱码这块我们我们说一下哈,这块乱码的话呢,同学可能会这样解决,D最上边你要加一个加一个他吧,是不是有这样解决的呀。这么解决什么呢?不好用。为什么呀,家想哈,大家想我现在我是不是到这个product,在这块我已经得到了每一个请参数的这个值啊,肯定这些值是从请求参数里面一个一个获取的,所以说到这个之前,它已经调用了request get图ter了吧。
20:03
它已经掉了吧,而我们有个要求就是我这句话什么了,我这句话得先于request getter吧,那怎么回事呢?你需要写一个filter过滤器,那个过滤器需要在这里边配一下,而且那个过滤器必须得配置在这个过滤器的前边,听懂了吧,这个时候才能够解决乱码的问题。好吧,发一句大家看一下。
我来说两句