我是靠谱客的博主 多情凉面,最近开发中收集的这篇文章主要介绍Struts2的struts.xml的配置细节,OGNL,标签(七)Struts2的struts.xml的配置细节,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
2019独角兽企业重金招聘Python工程师标准>>>
(七)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文件:主要用于实际开发,不同人员的区分.
<?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
<?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,主要用于跳转不存在的页面,到我们自定义的一个好看的页面,而不是难看的错误页面.
<?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
<?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,就如下所写
<action name="r3">
<result type="chain">
<param name="actionName">gogogo123</param>
<param name="namespace">/socure</param>
</result></action>
其他的包:
<package name="socure" namespace="/socure" extends="struts-default">
<action name='gogo123" class=""...............>
<result>index.jsp </result>
</action>
</package>
四:Struts2中的global_Results,全局结果集
<?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>
五.struts.xml中的动态结果集
这个用的不是太多,但还是需要了解的.
代码上注释很完整,这是我的风格:
struts.xml代码如下:
<?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代码:
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.
<?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.:
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页面:
<body>
向结果传参数
<ol>
<li><a href="user/user?type=1">传参数</a></li>
</ol>
</body>
第二个接收页面:
<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的struts.xml的配置细节,OGNL,标签(七)Struts2的struts.xml的配置细节所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复