我是靠谱客的博主 多情凉面,这篇文章主要介绍Struts2的struts.xml的配置细节,OGNL,标签(七)Struts2的struts.xml的配置细节,现在分享给大家,希望可以做个参考。

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

(七)Struts2的struts.xml的配置细节

这里说的struts.xml说到的包含内容如下:

1.include包含另一个xml

2.默认action,主要用于跳转不存在的页面,到我们自定义的一个好看的页面,而不是难看的错误页面.

3.struts.xml中action下的result的类型

4.struts.xml中的Global_Results,全局结果集

5.struts.xml中的动态结果集

6.struts.xml带参数的结果集

一.include包含另一个xml文件:主要用于实际开发,不同人员的区分.

复制代码
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <constant name="struts.devMode" value="true" />     <include file="login.xml" /> </struts>


包含下面的login.xml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <package name="login" extends="struts-default" namespace="/login">         <action name="login*" class="com.bjsxt.struts2.user.action.LoginAction{1}">             <result>/user_login_success.jsp</result>         </action>     </package> </struts>



二.默认action,主要用于跳转不存在的页面,到我们自定义的一个好看的页面,而不是难看的错误页面.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <constant name="struts.devMode" value="true" />          <package name="default" namespace="/" extends="struts-default"> <!--这里的default-action-ref是指 www.xxx.xxx/default/===>什么都没默认进入index action.-->      <default-action-ref name="index"></default-action-ref>      <action name="index">      <result>/default.jsp</result>      </action>     </package> </struts>



三.struts,xml中的result的类型

如上面,result默认为dispatcher

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <constant name="struts.devMode" value="true" />     <package name="resultTypes" namespace="/r" extends="struts-default">     <action name="r1"> //运用服务器跳转到结果页面,只能跳转到页面,不能是action,也是默认的类型      <result type="dispatcher">/1.jsp</result>     </action>          <action name="r2"> //重定向      <result type="redirect">/r2.jsp</result>     </action>          <action name="r3">     <!--重点:同一,但可以forward到action,是action是本xml中的action的name...-->      <result type="chain">r1</result>     </action>          <action name="r4">     //同二,但可以重定向到action      <result type="redirectAction">r</result>     </action>      //其余不常用,后面文章会有.     </package> </struts>

 如上,有跳到本xml的其他包下的action,就如下所写

复制代码
1
2
3
4
5
6
<action name="r3">        <result type="chain"> <param name="actionName">gogogo123</param> <param name="namespace">/socure</param> </result></action>


其他的包:

复制代码
1
复制代码
1
2
3
4
5
<package name="socure" namespace="/socure" extends="struts-default">  <action name='gogo123" class=""...............> <result>index.jsp </result> </action> </package>

四:Struts2中的global_Results,全局结果集

复制代码
1

复制代码
1
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <constant name="struts.devMode" value="true" />     <package name="userinfo" namespace="/userinfo" extends="struts-default">           <!-- global-results 就是这个包下action全局公用的一个result,-->      <global-results>      <result name="mainpage">/main.jsp</result>      </global-results>           <action name="index">      <result>/index.jsp</result>      </action>          <action name="userinfo" class="org.credo.struts2.userinfo.action.userinfoAction">      <result>/userinfo_success.jsp</result>      <result name="error">/userinfo_error.jsp</result>     </action>          </package>      <!--注意看 extends,它继承上面的package,所以也可以使用name为userinfo的包下所有的配置-->     <package name="admin" namespace="/admin" extends="userinfo">      <action name="admin" class="org.credo.struts2.userinfo.action.AdminAction">      <result>/admin.jsp</result>      </action>     </package> </struts>


复制代码
1

五.struts.xml中的动态结果集

这个用的不是太多,但还是需要了解的.

代码上注释很完整,这是我的风格:

struts.xml代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <constant name="struts.devMode" value="true" />     <package name="userinfo" namespace="/userinfo" extends="struts-default">          <action name="userinfo" class="org.credo.userinfo.action.UserAction"> <!--这里用${}来获取堆栈里存进去的值.如截图所示:-->      <result>${r}</result>     </action>          </package>      </struts>

如图所示的堆栈内容:



action代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class UserAction extends ActionSupport { private int type; private String r; public String getR() { return r; } public void setR(String r) { this.r = r; } public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public String execute() throws Exception { if(type == 1) r="/user_success.jsp"; else if (type == 2) r="/user_error.jsp"; return "success"; } }

如上所示,定义了一个r,并且赋值存入到堆栈中,而Struts的配置文件struts.xml中可以使用${值名称}的方式来获取值.它是OGNL表达式.


六.struts.xml带参数的结果集

首先是struts.xml文件代码,可以看到结果带了参数, ?t=${type}.而这种带参数的原因是因为结果集的类型为重定向redirect.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <constant name="struts.devMode" value="true" />     <package name="userinfo" namespace="/userinfo" extends="struts-default">          <action name="userinfo" class="org.credo.struts2.userinfo.action.UserAction">      <result type="redirect">/user_success.jsp?t=${type}</result>     </action>          </package>      </struts>

下面是action的代码,其中定义了type.:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class UserAction extends ActionSupport { private int type; public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public String execute() throws Exception { return "success"; }

第一个index页面:
复制代码
1
2
3
4
5
6
7
<body> 向结果传参数 <ol> <li><a href="user/user?type=1">传参数</a></li> </ol> </body>


第二个接收页面:

复制代码
1
2
3
4
5
6
7
<body> User Success! from valuestack: <s:property value="t"/><br/> from actioncontext: <s:property value="#parameters.t"/> <s:debug></s:debug> </body> </html>

可以看到在堆栈里是无法获取到数据的.因为这里指向的是jsp页面而不是action类.

而在action环境中则可以通过value="#parameters.t" 来获取到这个参数.


转载于:https://my.oschina.net/zhaoqian/blog/182610

最后

以上就是多情凉面最近收集整理的关于Struts2的struts.xml的配置细节,OGNL,标签(七)Struts2的struts.xml的配置细节的全部内容,更多相关Struts2内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部