您的位置:首页 > 编程语言 > Java开发

Struts2_2_Namespace_命名空间

2014-03-16 16:47 302 查看
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” >

<action name=”index”> </action>

</package>

<package name=”background” >

<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 ,那么访问的时候就应该是 /front/index ,

下面的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上面去的时候,给大家演示一下,先把Servers停掉,把原来的项目给remove掉,然后这个Servers很干净了,

然后我们可以把新的项目给部署上去,点击 Servers 右边的

Add
Deployment 图标,出现下图所示界面





选择我们的 新的 项目 T,点击finish,完成。

然后点

Debug
Servers 图标,运行 T项目。

然后我们来访问这个 T,

http://localhost:8080/T/sfsgsgs/index 大家请看它是没有的

如下图所示





但是当我们访问原来的namespace的时候,你会发现它还在,如下图所示





所以原因就在于 你copy完项目,之后需要在 MyEclipse的Web里面,一定要 把这个

Web Context-root的路径给改过来,如果你的新的项目叫做T,那么你这里也叫做 T

如下图所示





然后你重新部署就可以访问了。

这是拷贝项目的时候需要注意的内容。拷贝项目需要修改 Web Context-root的路径。

删除项目是,先把Servers停掉,然后Remove,在删掉项目。

第二个,把别人的项目引入到自己的WorkSpace中。

import General Existing Projects into WorkSpace 然后你选择好你的项目的根路径 ,需要注意的是一定要把Copyprojects into workspace 这个选项给勾上。建议大家一定要拷贝到自己的workspace下面去,然后点击Finish,完成就可以了。

正常情况就可以往你的Servers上面部署了。

有可能出问题的地方是,比如说你的项目引用的是JRE System Library 【jdk1.6.6_14】,而你那里不是叫这个名字,而且你是放在了别的路径,这个时候你是需要将其去掉,在重新配置一下,就是你把拷贝的项目的jre给remove掉,如下图所示:





然后在重新的将其加进来就可以了,演示一下,

我们将JRE System 给remove掉,就相当于 JAR包什么都没有,大家可以想想看,这个项目中的什么都用不了了,

我们还可以将其加进来,选中项目 Build Path Configure Build Path ,如下图所示





然后选择 Libraries ,然后选择右侧的

按钮,

如下图所示





选中我们的 JRE System Library 点击Next 下一步如下图所示





选择我们的Workspace 默认的就可以 了,点Finish完成。如下图所示





点 OK 即可。

这样就可以了,所以有可能大家在这里的设置跟我的是不一样的,大家可以吧我的去掉,把你的给加进来就可以了。

来源: <http://blog.sina.com.cn/s/blog_5e3c5e230100fapu.html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: