2_Namespace_命名空间
下面我们讲第二个项目,就是action里面的第二个内容:namespace
Action 里面我们主要讲
Action的入门,顺带着讲了 struts的作用,就是将请求和结果视图分开,学东西一定要在战略上藐视敌人,你给我放轻松了,别太把它当回事,学完之后大家会发现,也就是一些配置操作,忘了那不很简单,回去查就可以了。但是分析和设计这种思考过程,是谁也没有办法替代你的,所以这个东西大家一定要做。
讲namespace
讲如何定义自己的Action
讲路径设置的问题
讲如何调用Action的自定义方法
讲通配符的配置
讲如何接受用户的输入(3种方式)
讲如何处理乱码
讲数据校验
讲Action中如何访问web元素
讲包含模块的配置文件
讲默认action
当大家把这个小的项目部署好之后,就可以看到 本节所讲的主要内容,
namespace决定了action的访问的路径,namespace可以不写,默认的是 “”,空的 ,表示可以接受所有路径的action,
namespace可以写成
下面我们就来看一下 这个项目的配置。
首先看strut.xml文件,
这个 constant我就不解释了,
package在这里我稍作解释,问大家,Java乱码的package是干什么用的?给我们的类打个包,避免类重名的情况,很简单,在Struts 2里面,这个package的作用一样,比如说我们有两个action,一个叫做index,另外一个也叫index, 一个是前台的,一个是后台的,你就可以
<package name=”front” >
</package>
<action name=”index”> </action>
</package>
里面也可以由一个<action name=”index”> </action>
这样他们两个就不会冲突了,所以在命名上 ,package是用来区分重名的情况的。
extends 大家暂时就这样写就可以了,等讲完配置文件的配置之后大家就明白了。
第三个 namespace ,很简单,这个里面你写的是什么,你想访问这个namespace里面对应的action的时候,当你访问它的时候,就需要在前面带上你写的这个路径,namespace必须用斜杠(/)开头,这个namespace和我们的package在我们实际开发的时候,一般的来讲都用模块来命名,比如说我们现在写的是用户管理,那么这个package的名字就叫做user ,而后面的namespace一般的也叫做 user,即 /user 。一般是这样,这个主要是看大家在实际的开发中,项目经理是怎么样来约定的,所以如果我这里namespace是 /,那么我访问它的时候就 /index ,如果namespace是 /front
下面的result的name是success,凡是名字叫success的result,名字都可以不写,所以如果一个result没有写名字,那么默认就是 success,成功,对应的结果是什么。
namespace的路径默认为空,是什么意思了?意思就是说这个namespace是可以不写的,
我下面接着来第二个package,这个package的name 叫做 main,我的namespace是可以不写的。
上图的两种写法是等价的。
namespace不写就意味着namespace=”” ,namespace等于空就意味着只要你在URL地址里面敲index,不管你是在地址栏敲
http://localhost:8080/Struts2_0200_Namespace/index
还是http://localhost:8080/Struts2_0200_Namespace/sfsgsgs/gsgsgsg/index 在这里敲,你会发现它都可以访问我们的这个action,
现在namespace为空,大家可以理解了吧。这就意味着只要找到一个index 的action,然后没有找到的与其对应的精确的package的时候,全都交给namespace=“”的这个package去处理,所以从这个上面来讲这个namespace=””的package囊括了其他package处理不了的action。
总而言之,你找一个action的时候,先找一个对应的namespace里面有没有,如果没有的话,就到namespace位空的里面看一下有没有,要是还没有那就会报错了。
学习方法很重要,建议大家先把这个项目copy自己的机器上去,然后引入到自己WorkSpace里面,先部署上,做实验,看明白了之后,自己在动手来做自己的实验。
下面我们讲座这个操作的注意事项:
第一个,如果你是自己copy一个项目。
如把 Struts2_0200_Namespace项目选中,按 ctrl + c ,然后在Package 视图的空白处点一下,按ctrl + v 粘帖,出现下图所示界面,
我们将项目名称改为 T ,点击OK。
然后我们可以把新的项目给部署上去,点击 Servers 右边的 Add Deployment 图标,出现下图所示界面
选择我们的 新的 项目 T,点击finish,完成。
然后我们来访问这个 T,
http://localhost:8080/T/sfsgsgs/index 大家请看它是没有的
如下图所示
但是当我们访问原来的namespace的时候,你会发现它还在,如下图所示
所以原因就在于 你copy完项目,之后需要在 MyEclipse的Web里面,一定要 把这个
Web Context-root的路径给改过来,如果你的新的项目叫做T,那么你这里也叫做 T
如下图所示
然后你重新部署就可以访问了。
这是拷贝项目的时候需要注意的内容。拷贝项目需要修改
删除项目是,先把Servers停掉,然后Remove,在删掉项目。
第二个,把别人的项目引入到自己的WorkSpace中。
import
正常情况就可以往你的Servers上面部署了。
有可能出问题的地方是,比如说你的项目引用的是JRE System Library 【jdk1.6.6_14】,而你那里不是叫这个名字,而且你是放在了别的路径,这个时候你是需要将其去掉,在重新配置一下,就是你把拷贝的项目的jre给remove掉,如下图所示:
然后在重新的将其加进来就可以了,演示一下,
我们将JRE System 给remove掉,就相当于 JAR包什么都没有,大家可以想想看,这个项目中的什么都用不了了,
我们还可以将其加进来,选中项目
如下图所示
选中我们的 JRE System Library 点击Next 下一步如下图所示
选择我们的Workspace 默认的就可以 了,点Finish完成。如下图所示
点 OK 即可。
这样就可以了,所以有可能大家在这里的设置跟我的是不一样的,大家可以吧我的去掉,把你的给加进来就可以了。