Struts, Namespace用法
添加时间:2013-8-1 点击量:
比来在用SSH框架做一个项目,在应用Struts 的namespace时碰到不少题目,如今就对struts namespace 做一个简单的介绍吧.(本文从项目布局展开论述)
(第1次写博客, 写的不好,请见谅,望大师多提名贵定见~)
1. 新建一个项目工作叫做eczone, WebRoot的文件目次布局如下
- 此中index.jsp是用来做迎接界面的(见web.xml的<welcome-file>设备)
- /WEB-INF/web.xml (这个大师都懂,具体设备请baidu / google)
- /WEB-INF/pages/failure.jsp (登录失败的跳转页面)
- /WEB-INF/pages/success.jsp (登录成功的跳转页面)
2. 在web.xml中,迎接页面的设备如下:
<display-name>Eczone</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
若是,index.jsp在/WebRoot/pages/下面, 上方的设备则须要批改为: /pages/index.jsp
3. 接见体式格式: http://localhost:8080/eczone/
此中eczone为项目名称,也就是公布到tomcat的webapp下面的项目名。 (到如今似乎还没进来主题,别急让我们持续往下看-----》》)
4. URL的构成布局如下:(以下为最简单的用户登录后的url)
(关于.action,什么时辰须要指定,什么时辰不须要,将在后面申明)
5. 先看Struts.xml的设备
1 <struts>
2 <constant name=struts.devMode value=true></constant>
3 <!--Spring plus 经由过程overriding struts objectFactory 来加强框架核心对象的创建 -->
4 <constant name=struts.objectFactory
5 value=org.apache.struts2.spring.StrutsSpringObjectFactory />
6 <package name=mypkg2 extends=struts-default>
7 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
8 <result name=success>/pages/success2.jsp</result>
9 <result name=failure>/pages/failure.jsp</result>
10 </action>
11 </package>
12 <package name=mypkg1 namespace=/ extends=struts-default>
13 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
14 <result name=success>/pages/success1.jsp</result>
15 <result name=failure>/pages/failure.jsp</result>
16 </action>
17 </package>
18 <package name=user namespace=/user extends=struts-default>
19 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
20 <result name=success>/pages/success.jsp</result>
21 <result name=failure>/pages/failure.jsp</result>
22 </action>
23 </package>
24 </struts>
申明: 1. success1.jsp, success2.jsp可以参加到/pages/ 目次下进行测试,到底恳求了那个action. (在success.jsp, success1.jsp, success2.jsp上浮现不合内容来差别)
2. Struts在处理惩罚恳求时,若是恳求指定了namespace , struts 会按照指定的namespace去查找action;
若是恳求没有指定namespace, Struts则从默认namespace的根目次去查找acton
3. 在 Struts.xml中namespace=/ 为默认的根目次, 若是不指定namespace的值则也等同于namespace=/.
6. 在看index.jsp的 代码
<s:form name=loginForm action=userLogin method=POST namespace=/user>
<s:textfield name=userName label=Login name />
<s:password name=passWord label=Password />
<s:submit value=Login align=center />
</s:form>
申明:1. namespace 若是不指定, 默认为 namespace=/ 更目次
2. action为Struts.xml中定义的action的名称.
3. 有的处所会指定action为以下值:
》 /user/userLogin 这种体式格式,页面可以跳转成功, 然则把握台会抛异常或警告 :
No configuration found for the specified action: /user/userLogin in namespace: /user. Form action defaulting to action attributes literal value.
》 /user/userLogin.action 这种体式格式页面能跳转成功,呈现如下警告:
No configuration found for the specified action: /user/userLogin.action in namespace: /user. Form action defaulting to action attributes literal value.
4. 最后来说.action的工作 , <s:form>应用的是Struts标签,会主动添加.action, 若是是ajax等本身拼装URL的时辰,必须加上.action.
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
比来在用SSH框架做一个项目,在应用Struts 的namespace时碰到不少题目,如今就对struts namespace 做一个简单的介绍吧.(本文从项目布局展开论述)
(第1次写博客, 写的不好,请见谅,望大师多提名贵定见~)
1. 新建一个项目工作叫做eczone, WebRoot的文件目次布局如下
- 此中index.jsp是用来做迎接界面的(见web.xml的<welcome-file>设备)
- /WEB-INF/web.xml (这个大师都懂,具体设备请baidu / google)
- /WEB-INF/pages/failure.jsp (登录失败的跳转页面)
- /WEB-INF/pages/success.jsp (登录成功的跳转页面)
2. 在web.xml中,迎接页面的设备如下:
<display-name>Eczone</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
若是,index.jsp在/WebRoot/pages/下面, 上方的设备则须要批改为: /pages/index.jsp
3. 接见体式格式: http://localhost:8080/eczone/
此中eczone为项目名称,也就是公布到tomcat的webapp下面的项目名。 (到如今似乎还没进来主题,别急让我们持续往下看-----》》)
4. URL的构成布局如下:(以下为最简单的用户登录后的url)
(关于.action,什么时辰须要指定,什么时辰不须要,将在后面申明)
5. 先看Struts.xml的设备
1 <struts>
2 <constant name=struts.devMode value=true></constant>
3 <!--Spring plus 经由过程overriding struts objectFactory 来加强框架核心对象的创建 -->
4 <constant name=struts.objectFactory
5 value=org.apache.struts2.spring.StrutsSpringObjectFactory />
6 <package name=mypkg2 extends=struts-default>
7 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
8 <result name=success>/pages/success2.jsp</result>
9 <result name=failure>/pages/failure.jsp</result>
10 </action>
11 </package>
12 <package name=mypkg1 namespace=/ extends=struts-default>
13 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
14 <result name=success>/pages/success1.jsp</result>
15 <result name=failure>/pages/failure.jsp</result>
16 </action>
17 </package>
18 <package name=user namespace=/user extends=struts-default>
19 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
20 <result name=success>/pages/success.jsp</result>
21 <result name=failure>/pages/failure.jsp</result>
22 </action>
23 </package>
24 </struts>
申明: 1. success1.jsp, success2.jsp可以参加到/pages/ 目次下进行测试,到底恳求了那个action. (在success.jsp, success1.jsp, success2.jsp上浮现不合内容来差别)
2. Struts在处理惩罚恳求时,若是恳求指定了namespace , struts 会按照指定的namespace去查找action;
若是恳求没有指定namespace, Struts则从默认namespace的根目次去查找acton
3. 在 Struts.xml中namespace=/ 为默认的根目次, 若是不指定namespace的值则也等同于namespace=/.
6. 在看index.jsp的 代码
<s:form name=loginForm action=userLogin method=POST namespace=/user>
<s:textfield name=userName label=Login name />
<s:password name=passWord label=Password />
<s:submit value=Login align=center />
</s:form>
申明:1. namespace 若是不指定, 默认为 namespace=/ 更目次
2. action为Struts.xml中定义的action的名称.
3. 有的处所会指定action为以下值:
》 /user/userLogin 这种体式格式,页面可以跳转成功, 然则把握台会抛异常或警告 :
No configuration found for the specified action: /user/userLogin in namespace: /user. Form action defaulting to action attributes literal value.
》 /user/userLogin.action 这种体式格式页面能跳转成功,呈现如下警告:
No configuration found for the specified action: /user/userLogin.action in namespace: /user. Form action defaulting to action attributes literal value.
4. 最后来说.action的工作 , <s:form>应用的是Struts标签,会主动添加.action, 若是是ajax等本身拼装URL的时辰,必须加上.action.
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》