00:00
下边呢,我们来研究一下stra to的action。首先来创建一个抓的工程。这是我们最后一次创建工程哈,下次再创建的时候呢,我就直接复制了,我们再把这个流程呢再走一遍。RA。嗯。哎,搭建抓two这个项目的环境,我们需要几个步骤啊。需要三个步骤。第一个步骤,加入加包第二个步骤。配置web X文件,具体说这里边配置一个filter,在我们讲MVC的时候需要配置一个sotrut,一也是配一个so。最后一个步骤,在类路径下添一个刷图的配置文件。
01:01
外卖办。一盘Java open source。找到stra two。2.3.15。打开找到applications,这个下边放的呢,呃,是stra to框架已经帮我们写好的一些应用,比方说啊,Blank没有reader啊,包括这个showcase啊等等等。我们现在啊,我们。解压这个点wall。这个昨天的话呢,已经检验好了,打开这是一个空的刷图应用,找到web info Li,所有的包都复制过来,CTRLC。昨天讲课的时候呢,我们已经讲了哈,这并不是一个最小化的一个包,但是却是却是最常用的一个包。呃,一主包。
02:00
然后我们来配这个webs文件。这是第二个步骤。好。加入配置。Web webs文件。需要配一个filter,这个filter技巧我们是记不住的,于是的话呢,呃,例子里边怎么给的我们就怎么配。这是不需要修改的。配置抓兔的filter。最后一步,我们需要来添加two的配置文件,在classic下边。备注镜下吗?加上一个struts xml。拍照这个里面。打开我们需要清理一下。大家看。Content常量,我们今天的话呢,将会讲到这个常量先拿掉啊I。
03:01
Name space name space啊,默认的就是这个斜杠,呃,继承了tru default,为什么需要继承这个ru default。因为我们需要用到rat已经给我们写好了一些配置,比方说呃。类型的响应方式,比方说他已经定好定义好的一些拦截器以及拦截器站。这个拿掉。这里边的话呢,我们看到一个什么,看到一个include,我可以包含其他的SPA two的配置文件进来,就是说我可以怎么样,我可以让当前这个配置文件,呃,放一部分内容,而另外一个文件放一部分内容,这样的好处是什么呀,这样的好处是我们。配置不一定都放在一个配置文件里边,导致我们这个呃,配置可以比较松散,更加的便于维护,我们可以看一下哈,这个配置文件example打开。
04:04
否,大家看它的确是一个stra to的一个配置文件,没问题。好了,我们这个里边的话,我们就给它删掉。OK,那这块的话呢,这个抓这个环境就完全好了,三个步骤。哎,我们来做个笔记。Dot的TXT。第一个我们说。搭建。抓的开发环境,等于是个复习哈,复习有三个步骤。每一个的话呢,里边我们就不说了啊,第二个我们的目标是想来说一下这个action。说的是。这个啊。
05:00
有好几层含义,我们这里面的话呢,我们还要来说一个action类。Action类,我们讲的就是这个action类嘛,我们来说说这个action,以及这个action类到底是什么哎。我们先来说这个action。代表。一个。啊,请求一个two的请求就是一个。Action。大家看我们前面这个配置。打开看这里边的话呢,我们配置过很多的。Action,那我本身这是一个action节点,它是不是对应着一个action请求啊。那这个不是跟一个pass相对应吗。好了,这是我们小写的action,再看一个,还有一个叫action类action。
06:06
说能够处理。To请求的类就是action类,那么怎么叫能够处理to请求的类呢?比方说我在这个类里边有那么一个或几个方法可以处理抓图的请求。那我们先前写的这个product就是一个action类,为什么呀?因为这个里边有一个save方法,他可以来处理一个抓图的请求。好了。下边我们详细来说一下这个action类有哪些句子的特点,这个的话呢,PPT里面我有写啊,我直接把这部分复制过来。CTRLC,它有这样的。一个点。
07:01
Eagle。说。To的属性是按ins属性的命名规范来进行命名的。就是说我们在抓里边,抓X里面要是配属性的话,按抓B的方式来命名的。我们还是看前面这个例子哈,你看这里边儿的话呢,我写过很多。字段,然后对应的概塞的方法,我们知道这个字段或者这个盖塞的方法跟什么对呀。跟我发请求时候表单的这个。字段是一个一个对应的,我来改一下,改一个product name two。OK,到这个里边,我们看它这个不改,我去改这个set方法。再看一下这个效果走一遍。
08:14
A product input。Oh。我点这个product input的时候怎么了?它出错了,他说没有一个action跟它是对应的,为什么呀?找到我们昨天讲的哈,看一下貌似我们写过一个name space啊,这个问题我把这个name space呢先给它去掉。保存。更新移动服务器。刷新找。没问题哦。Name。T2找一个。这块这个结果一样是可以出来的,没问题,那这个时候我这个属性叫什么呀。
09:05
回退右键。原文件。看这个属性叫product to,那我跟它对应的。X里边的属性是什么?通过set方法定义的product name to好了,这是我改过来的哈,我要是不改的话,它会怎么样?为什么呀,不改的话,这个属性值就付不过来呗,因为他没有跟那个字段对应的属性对吧。看一下。再走。大家看这个时候这个值是空,那这块这个值也是空,哎,这就是我们说的第一件事。属性的名字是用张阿B的这个属性命名方式来进行命名的,而且呢,呃,字符串到非字符串,我们指的是基本数据类型啊,这个转换可以自动的完成。这个我们后边讲拦截拦截器的时候,我们会来讲这个自动转换的这个问题。
10:05
好,第二个必须有一个无参的构造器,为什么呀?因为我在这里边儿配置的时候,我是配了一个,这里边儿是配了一个。全类名,我当然是通过反射的方式创建这个实例,所以说啊。你要有一个无参的构造期再来。在我们这个action里面至少有一个供抓用的方法,这样的话它才能够应答抓to的请求,它才能称之为是一个抓two的action类,像我们这个里边一样,是吧?哎,我有这么一个save方法。再下一个需要说的,大家看我同一个action呢,可以包含多个action方法,就是说我可以再写一个方法,我随便加一个哈,看。
11:01
Public。S stra g。加上了out。Return一个结果。Success写完OK,我说我这一个action类可以应答多个请求。我们就在这里边给他说吧。Index,看我写一个。第二。边我再写一个这个请求。叫。点儿。Let。回来。刷新。Taste。发现什么问题啊?
12:00
我没有跟他映射的action。找到配置文件,我配过吗?哦,我还没配过呢是吧。配一下。Action,名字叫。Class,还是这个class,我们是在这里边写了一个test的方法,然后指定一个method,我也叫test,我result,我去登录下的inex.P。走一下。刷新就可以了,哎,我们看到又回来了,我点一下哈。刷新了是吧,为什么呀。打印都有了,有打印呢,哎,这就是我的一个X类可以应答。多个埃克森请求。
13:02
啊,比方说哎,我是一个小模块,都是用户的,那用户管理我们就可以在一个action类里边完成,里边我们可以加多个action方法。看最后一条。抓,会为每一个请求创建一个新的X力,即。Action不是单例的。啊,每一个请求创建一个新的action实例啊,是线程安全的,就不会有线程安全的问题,因为一个请求一个人,我怎么会有现成安全的问题呢。怎么测试呢?我来写一个构造器,大家看一下。All。工的构造器,写一个一句话,Product in。
14:10
写完。好了,我只要每发一次请求都打印这句话的话,说明他就不是单实例的吧,说明他就是为每一个请求创建一个新的实例吧。看一下。Test test没问题,每一次都创建了一个新的实例,OK。回到这个里边来,这就是我们要跟大家讲的这个。Action。两块,第一个这个小action代表了一个抓图的请求。大的action表示能够处理stra to请求的类,那当然要求这个里边必须有一个执行action时调用的方法,要不的话它就不是action,不是action类了呀。然后呢?啊,属性的定义是遵循张阿B的命令规范,我们做了实验,必须有一个无弹的构造器啊,通过反射调用实例,通过反射创建实力哈。
15:13
啊,一个action可以同时应答多个action请求D、我在一个这一个action里边可以有多个action方法。啊,不是单立的,为每一个请求都创建了一个新的X实例。好了,这是我们对action一些基本的了解,我们下边的话呢,将深入来看一下我们在action里边如何去访问web资源。什么叫访问外部资源呢?就是说我们失去了不少是吧。但我们终究这是一个。控制器的一个类,我这里边,我难免需要把某一个集合或某一个对象放到对象里边,比方说放session里面,放request里面,放application里面,乃至于我需要去访问原生somebody API的一些方法这么做,那下节课说这个事。
我来说两句