Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明
来源:互联网 发布:金融数据挖掘与分析 编辑:程序博客网 时间:2024/05/05 23:12
内容简介: 掌握 struts.xml 最核心的配置属性
Struts 框架的核心配置文件就是 struts.xml 配置文件,该文件主要负责管理 Struts 2 框架的业务控制器 Action。
在默认情况下,Struts 2 框架将自动加载放在 WEB-INF/classes 路径下的 struts.xml文件。所以在第一篇文章中,新建struts.xml时,要求一定要建立在src目录下,该目录下的内容在开发中会被复制到 WEB-INF/classes 目录下(.java文件不会被复制过去,编译好后的.class文件直接被创建在那里面, myeclipse下的web project是这样的)
struts.xml 的根元素是struts
其中最重要的元素是package,是根元素package的子元素
package是action元素的父元素
-
-
接下来我们就在实践中去看各个元素以及属性的实际用法
我们打开第一篇文章中用到的项目,如果没有请到这里下载
新建一个包yufei.conf,在这个包下新建一个strutsconf.xml,这是个struts的配置文件,我们需要在struts.xml中
引入这个文件(因为前面已经提过了,struts2默认载入WEB-INF/classes 路径下的 struts.xml)
strutsconf.xml
修改后的struts.xml文件,在<!-- ********** -->之间的是新加的内容
代码中会用注释来说明
使用 include 的好处: 当我们开发一个项目,配置文件肯定会写一大堆,如果写在一个配置文件里一定冗长,查看和修
改都不方便,所以使用include把配置文件分开来便于查找和修改,完全有理由让struts.xml仅仅是作为一个目录来使用
,至于其它配置文件的分配,可以根据模块也可以根据功能来划分
-
-
接下来我们在WebRoot文件夹下新建一个文件夹,取名conf
然后把WebRoot文件夹下的index.jsp,welcome.jsp,error.jsp
复制到conf文件夹中,修改index.jsp的action属性,再在welcome.jsp和error.jsp加上识别是在conf文件夹下的标识
在yufei.conf包内新建一个类HelloAction
注意,这个类比起以前那个类多了一个方法
然后来配置strutsconf.xml配置文件
现在我们可以运行程序来测试新写这个是否成功,启动tomcat,然后在浏览器中输入
http://127.0.0.1:8888/Struts2Study/conf/index.jsp 来打开页面
(http://127.0.0.1:8888/Struts2Study/ 是你的项目根 tomcat默认端口是8080我修改过)
输入yufei应该能看到页面显示
你是谁啊,我根本不认识你,再不离开我放狗了 此页在conf目录下
输入其它的应该能看到页面显示
你是谁啊,我根本不认识你,再不离开我放狗了 此页在conf目录下
如果看到以上这些,那么我们进入下一步来讲解package,先给出package的定义
package是把actions,results,result types,interceptors和stacks分组成逻辑单元的一种方式
,以分享一些共同设置,包跟对象一样可以扩展,也可以被"子"包覆盖部分属性
从以上定义我们可以看出package不仅是作为逻辑分隔,而且还能具有继承的特性
package的属性见下图
从图中可以看出, name属性仅仅是个代号(id),我们可以随边取,只要不冲突(不重复),而extends代表继承其它的包
里面填参数是其它包的name属性,namespace代表名称空间(下篇文章专门讲这个,这里不再多说),至于abstract,这个
和我们写java的abstract类一样,就是让人家来继承的
只有name是必需的,不过在默认情况下,extends也是必需的,因为我们需要从struts2默认载入的struts-default.xml
文件的struts-default包中继承一些东西,有兴趣可以解压struts2-core-2.0.9.jar找到struts-defautl.xml查看内容
我们现在可以做个试验,把extends这项去掉,然后我们重新启动tomcat,在tomcat重新启动时就会报错,这说明确实
需要从struts-default.xml继承一些内容
-
-
下面我们来看action,action是struts2的基础"工作单元",一个action一般就是一个请求(或点击按钮或提
交表单),action元素有两部分,一个友好的名字(URL相关,如Login.action)和一个负责"处理"的类
接下来我们再来做一个试验,我们将strutsconf.xml再修改一下,给action添加一个method来改变执行方法
我们再此启动tomcat,来测试,记住烦是修改了除页面文件以外的文件都需要重新启动tomcat或者
使用热部署重新部署一次
现在当我们在用户栏输入yufei后,不会进入welcome.jsp页面了,那证明没有调用execute方法,当在
用户栏输入featherfly后,进入了welcome.jsp页面,证明调用了userMethod方法
如果象下面这样只有name属性,会缺省使用com.opensymphony.xwork2.ActionSupport类,
调用其execute()方法,返回success
-
-
最后剩下result了,result是Action执行后返回的字符串
我之前都是这样写的,那是因为我都是使用我都是使用jsp作为其转向后的视图的,struts2支持
以多种视图显示(Jsp,FreeMaker,velocity等等),所以其基本形式和一些变型会在下面给出
-
-
有时候,我们会在很多不同页面的请求遇到某些情况都返回一个相同的页面(比如错误页面),那么我们在每一个
action里都要写出来,象下面那样
在这种情况下,我们就可以使用全局result,下面我们来看看其定义
Struts2 允许你为所有Action配置定义一些默认的result映射,它会自动的被这个包中的所有Action以及
扩展包继承,换句话说,如果你在多个Action中使用相同的result映射,你可以把它配置成全局的result
这里做个比喻,package就相当于java的类(class),全局result就相当于类中的成员变量,result就相当于成员方法,所有成员方法都能使用成员变量类可以继承其它类
下面我们来看实际例子,打开struts2.xml修改如下
从上面的配置我们可以看出,这里多出了一个类(yufei.conf.Hi)和一个页面(/conf/welcome1.jsp)
yufei.conf.Hi 这个类的代码和 yufei.conf.HelloAction 完全一样,welcome1.jsp,只是多了点识别文本
最后需要在index.jsp里新加一个表单来让其跳转到Hi.action
现在我们可以打开tomcat,然后打开http://127.0.0.1:8888/Struts2Study/conf/index.jsp来测试了
当我们在上面和下面的表单里输入的不正确时,都时跳转到error.jsp,但是输入正确的话,上面的时跳转
到welcome.jsp(输入featherfly),下面是跳转到welcome1.jsp(输入yufei)
Struts 框架的核心配置文件就是 struts.xml 配置文件,该文件主要负责管理 Struts 2 框架的业务控制器 Action。
在默认情况下,Struts 2 框架将自动加载放在 WEB-INF/classes 路径下的 struts.xml文件。所以在第一篇文章中,新建struts.xml时,要求一定要建立在src目录下,该目录下的内容在开发中会被复制到 WEB-INF/classes 目录下(.java文件不会被复制过去,编译好后的.class文件直接被创建在那里面, myeclipse下的web project是这样的)
struts.xml 的根元素是struts
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "struts-2.0.dtd">
- <!-- 根元素是Struts -->
- <struts>
- </struts>
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""struts-2.0.dtd"><!-- 根元素是Struts --><struts></struts>
其中最重要的元素是package,是根元素package的子元素
package是action元素的父元素
- <struts>
- <package>
- <action name="" class="">
- </action>
- </package>
- </struts>
<struts><package><action name="" class=""></action></package></struts>
-
-
接下来我们就在实践中去看各个元素以及属性的实际用法
我们打开第一篇文章中用到的项目,如果没有请到这里下载
新建一个包yufei.conf,在这个包下新建一个strutsconf.xml,这是个struts的配置文件,我们需要在struts.xml中
引入这个文件(因为前面已经提过了,struts2默认载入WEB-INF/classes 路径下的 struts.xml)
strutsconf.xml
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- </struts>
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts></struts>
修改后的struts.xml文件,在<!-- ********** -->之间的是新加的内容
代码中会用注释来说明
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="yufei.hello" extends="struts-default">
- <action name="Login" class="yufei.hello.HelloAction">
- <result name="error">/error.jsp</result>
- <result name="success">/welcome.jsp</result>
- </action>
- </package>
- <!--
- 该元素是struts的子元素
- 该元素只有一个属性 file,即需要倒入的外部配置文件
- 下面这个写法基本就是其标准形式了
- -->
- <!-- ******************************************** -->
- <include file="yufei/conf/strutsconf.xml" />
- <!-- ******************************************** -->
- </struts>
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="yufei.hello" extends="struts-default"><action name="Login" class="yufei.hello.HelloAction"><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action></package><!-- 该元素是struts的子元素该元素只有一个属性 file,即需要倒入的外部配置文件下面这个写法基本就是其标准形式了--><!-- ******************************************** --><include file="yufei/conf/strutsconf.xml" /><!-- ******************************************** --></struts>
使用 include 的好处: 当我们开发一个项目,配置文件肯定会写一大堆,如果写在一个配置文件里一定冗长,查看和修
改都不方便,所以使用include把配置文件分开来便于查找和修改,完全有理由让struts.xml仅仅是作为一个目录来使用
,至于其它配置文件的分配,可以根据模块也可以根据功能来划分
-
-
接下来我们在WebRoot文件夹下新建一个文件夹,取名conf
然后把WebRoot文件夹下的index.jsp,welcome.jsp,error.jsp
复制到conf文件夹中,修改index.jsp的action属性,再在welcome.jsp和error.jsp加上识别是在conf文件夹下的标识
- <!--修改index.jsp中form表单的action为下面这样 -->
- <form action="Conf.action" method="post">
<!--修改index.jsp中form表单的action为下面这样 --><form action="Conf.action" method="post">
- <body>
- 你是谁啊,我根本不认识你,再不离开我放狗了
- 此页在conf目录下
- <!--上面conf目录这句提示在welcome.jsp和error.jsp中都加上,好识别跳转到的是哪里 -->
- </body>
<body> 你是谁啊,我根本不认识你,再不离开我放狗了 此页在conf目录下 <!--上面conf目录这句提示在welcome.jsp和error.jsp中都加上,好识别跳转到的是哪里 --> </body>
在yufei.conf包内新建一个类HelloAction
注意,这个类比起以前那个类多了一个方法
- package yufei.conf;
- public class HelloAction
- {
- private String username;
- private String password;
- public String getPassword()
- {
- return password;
- }
- public void setPassword(String password)
- {
- this.password = password;
- }
- public String getUsername()
- {
- return username;
- }
- public void setUsername(String username)
- {
- this.username = username;
- }
- public String execute()
- {
- String strReturn = "error";
- if (username.equals("yufei"))
- strReturn = "success";
- return strReturn;
- }
- public String userMethod()
- {
- String strReturn = "error";
- if (username.equals("featherfly"))
- strReturn = "success";
- return strReturn;
- }
- }
package yufei.conf;public class HelloAction{private String username;private String password;public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public String getUsername(){return username;}public void setUsername(String username){this.username = username;}public String execute(){String strReturn = "error";if (username.equals("yufei"))strReturn = "success";return strReturn;}public String userMethod(){String strReturn = "error";if (username.equals("featherfly"))strReturn = "success";return strReturn;}}
然后来配置strutsconf.xml配置文件
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="yufei.conf.package" extends="struts-default">
- <action name="Conf" class="yufei.conf.HelloAction">
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- </package>
- </struts>
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><package name="yufei.conf.package" extends="struts-default"><action name="Conf" class="yufei.conf.HelloAction"><result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result></action></package></struts>
现在我们可以运行程序来测试新写这个是否成功,启动tomcat,然后在浏览器中输入
http://127.0.0.1:8888/Struts2Study/conf/index.jsp 来打开页面
(http://127.0.0.1:8888/Struts2Study/ 是你的项目根 tomcat默认端口是8080我修改过)
输入yufei应该能看到页面显示
你是谁啊,我根本不认识你,再不离开我放狗了 此页在conf目录下
输入其它的应该能看到页面显示
你是谁啊,我根本不认识你,再不离开我放狗了 此页在conf目录下
如果看到以上这些,那么我们进入下一步来讲解package,先给出package的定义
package是把actions,results,result types,interceptors和stacks分组成逻辑单元的一种方式
,以分享一些共同设置,包跟对象一样可以扩展,也可以被"子"包覆盖部分属性
从以上定义我们可以看出package不仅是作为逻辑分隔,而且还能具有继承的特性
package的属性见下图
从图中可以看出, name属性仅仅是个代号(id),我们可以随边取,只要不冲突(不重复),而extends代表继承其它的包
里面填参数是其它包的name属性,namespace代表名称空间(下篇文章专门讲这个,这里不再多说),至于abstract,这个
和我们写java的abstract类一样,就是让人家来继承的
只有name是必需的,不过在默认情况下,extends也是必需的,因为我们需要从struts2默认载入的struts-default.xml
文件的struts-default包中继承一些东西,有兴趣可以解压struts2-core-2.0.9.jar找到struts-defautl.xml查看内容
我们现在可以做个试验,把extends这项去掉,然后我们重新启动tomcat,在tomcat重新启动时就会报错,这说明确实
需要从struts-default.xml继承一些内容
-
-
下面我们来看action,action是struts2的基础"工作单元",一个action一般就是一个请求(或点击按钮或提
交表单),action元素有两部分,一个友好的名字(URL相关,如Login.action)和一个负责"处理"的类
- <!--
- name表示*.action前面那部分这里即是表示Conf.action
- class表示使用哪个类来处理此请求
- method 是可选属性,表示使用哪个方法来处理,
- 如果缺此项默认调用类中的execute()方法
- -->
- <action name="Conf" class="yufei.conf.HelloAction" method="方法名">
- </action>
<!-- name表示*.action前面那部分这里即是表示Conf.actionclass表示使用哪个类来处理此请求method 是可选属性,表示使用哪个方法来处理, 如果缺此项默认调用类中的execute()方法--><action name="Conf" class="yufei.conf.HelloAction" method="方法名"></action>
接下来我们再来做一个试验,我们将strutsconf.xml再修改一下,给action添加一个method来改变执行方法
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!--
- 这是上面配置的,现在将其注释起来,在复制一份,然后给其添加method属性
- 由于刚才我们新建那个HelloAction类里除了execute()方法外,还有一个
- userMethod()方法
- 要调用的方法必需符合以下三个条件
- 1 是public 2 返回String 3 没有参数
- <package name="yufei.conf.package" extends="struts-default">
- <action name="Conf" class="yufei.conf.HelloAction">
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- </package>
- -->
- <package name="yufei.conf.package" extends="struts-default">
- <!-- 指定userMethod -->
- <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- </package>
- </struts>
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- 这是上面配置的,现在将其注释起来,在复制一份,然后给其添加method属性由于刚才我们新建那个HelloAction类里除了execute()方法外,还有一个userMethod()方法要调用的方法必需符合以下三个条件1 是public 2 返回String 3 没有参数<package name="yufei.conf.package" extends="struts-default"><action name="Conf" class="yufei.conf.HelloAction"><result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result></action></package> --><package name="yufei.conf.package" extends="struts-default"><!-- 指定userMethod --><action name="Conf" class="yufei.conf.HelloAction" method="userMethod"><result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result></action></package></struts>
我们再此启动tomcat,来测试,记住烦是修改了除页面文件以外的文件都需要重新启动tomcat或者
使用热部署重新部署一次
现在当我们在用户栏输入yufei后,不会进入welcome.jsp页面了,那证明没有调用execute方法,当在
用户栏输入featherfly后,进入了welcome.jsp页面,证明调用了userMethod方法
如果象下面这样只有name属性,会缺省使用com.opensymphony.xwork2.ActionSupport类,
调用其execute()方法,返回success
- <action name="Conf">
- </action>
<action name="Conf"></action>
-
-
最后剩下result了,result是Action执行后返回的字符串
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
<result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result>
我之前都是这样写的,那是因为我都是使用我都是使用jsp作为其转向后的视图的,struts2支持
以多种视图显示(Jsp,FreeMaker,velocity等等),所以其基本形式和一些变型会在下面给出
- <action name="referen" class="yufei.conf.HelloAction">
- <!-- 基本形式 -->
- <result name="success" type="dispatcher">
- <param name="location">/conf/welcome.jsp</param>
- </result>
- <!--
- 如果location是唯一的参数,象上面这个,还可以改写为下面形式
- 如果result标签对中间没有 param 标签,就把result标签对中间
- 的文本作为location
- -->
- <result name="success" type="dispatcher">/conf/welcome.jsp</result>
- <!-- 如果type是"dispatcher",类似于servlet标准中ServletDispatcher的forward-->
- <result name="success">/conf/welcome.jsp</result>
- <!-- 如果name是"success",还可以继续简化 -->
- <result>/conf/welcome.jsp</result>
- </action>
<action name="referen" class="yufei.conf.HelloAction"><!-- 基本形式 --><result name="success" type="dispatcher"><param name="location">/conf/welcome.jsp</param></result><!-- 如果location是唯一的参数,象上面这个,还可以改写为下面形式 如果result标签对中间没有 param 标签,就把result标签对中间的文本作为location--><result name="success" type="dispatcher">/conf/welcome.jsp</result><!-- 如果type是"dispatcher",类似于servlet标准中ServletDispatcher的forward--><result name="success">/conf/welcome.jsp</result><!-- 如果name是"success",还可以继续简化 --><result>/conf/welcome.jsp</result></action>
-
-
有时候,我们会在很多不同页面的请求遇到某些情况都返回一个相同的页面(比如错误页面),那么我们在每一个
action里都要写出来,象下面那样
- <package name="yufei.conf.package" extends="struts-default">
- <!-- 在这个包下,两个action结果为error时,都会返回/conf/error.jsp -->
- <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- <action name="Hi" class="yufei.conf.Hi">
- <result name="success">/conf/welcome1.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- </package>
<package name="yufei.conf.package" extends="struts-default"><!-- 在这个包下,两个action结果为error时,都会返回/conf/error.jsp --><action name="Conf" class="yufei.conf.HelloAction" method="userMethod"><result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result></action><action name="Hi" class="yufei.conf.Hi"><result name="success">/conf/welcome1.jsp</result><result name="error">/conf/error.jsp</result></action></package>
在这种情况下,我们就可以使用全局result,下面我们来看看其定义
Struts2 允许你为所有Action配置定义一些默认的result映射,它会自动的被这个包中的所有Action以及
扩展包继承,换句话说,如果你在多个Action中使用相同的result映射,你可以把它配置成全局的result
这里做个比喻,package就相当于java的类(class),全局result就相当于类中的成员变量,result就相当于成员方法,所有成员方法都能使用成员变量类可以继承其它类
下面我们来看实际例子,打开struts2.xml修改如下
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <!--
- 这是上面配置的,现在将其注释起来,在复制一份,然后给其添加method属性
- 由于刚才我们新建那个HelloAction类里除了execute()方法外,还有一个
- userMethod()方法
- 要调用的方法必需符合以下三个条件
- 1 是public 2 返回String 3 没有参数
- <package name="yufei.conf.package" extends="struts-default">
- <action name="Conf" class="yufei.conf.HelloAction">
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- </package>
- -->
- <!-- 把这里注释起来
- <package name="yufei.conf.package" extends="struts-default">
- <!-- 指定userMethod -->
- <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">
- <result name="success">/conf/welcome.jsp</result>
- <result name="error">/conf/error.jsp</result>
- </action>
- </package>
- -->
- <!-- 这里是新加的内容 -->
- <package name="yufei.conf.package" extends="struts-default">
- <!--
- 这里声明了一个全局结果
- 这就是代表,这个包下的所有action执行的返回结果是error
- 就都会跳转到/conf/error.jsp
- 继承此包的包的action也如此(当然在你覆盖了会是你覆盖后的配置)
- -->
- <!-- ******************************************** -->
- <global-results>
- <result name="error">/conf/error.jsp</result>
- </global-results>
- <!-- ******************************************** -->
- <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">
- <result name="success">/conf/welcome.jsp</result>
- </action>
- <action name="Hi" class="yufei.conf.Hi">
- <result name="success">/conf/welcome1.jsp</result>
- </action>
- </package>
- </struts>
<?xml version="1.0" encoding="GBK"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- 这是上面配置的,现在将其注释起来,在复制一份,然后给其添加method属性由于刚才我们新建那个HelloAction类里除了execute()方法外,还有一个userMethod()方法要调用的方法必需符合以下三个条件1 是public 2 返回String 3 没有参数<package name="yufei.conf.package" extends="struts-default"><action name="Conf" class="yufei.conf.HelloAction"><result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result></action></package> --><!-- 把这里注释起来<package name="yufei.conf.package" extends="struts-default"><!-- 指定userMethod --><action name="Conf" class="yufei.conf.HelloAction" method="userMethod"><result name="success">/conf/welcome.jsp</result><result name="error">/conf/error.jsp</result></action></package>--><!-- 这里是新加的内容 --><package name="yufei.conf.package" extends="struts-default"><!-- 这里声明了一个全局结果这就是代表,这个包下的所有action执行的返回结果是error就都会跳转到/conf/error.jsp继承此包的包的action也如此(当然在你覆盖了会是你覆盖后的配置)--><!-- ******************************************** --><global-results><result name="error">/conf/error.jsp</result></global-results><!-- ******************************************** --><action name="Conf" class="yufei.conf.HelloAction" method="userMethod"><result name="success">/conf/welcome.jsp</result></action><action name="Hi" class="yufei.conf.Hi"><result name="success">/conf/welcome1.jsp</result></action></package></struts>
从上面的配置我们可以看出,这里多出了一个类(yufei.conf.Hi)和一个页面(/conf/welcome1.jsp)
yufei.conf.Hi 这个类的代码和 yufei.conf.HelloAction 完全一样,welcome1.jsp,只是多了点识别文本
- <body>
- 你好啊亲爱滴,我等你很久了
- 此页在conf目录下<br>
- 这个页面是welcome1.jsp
- <!--上面这个是识别文本,让我们看是跳转到welcome1还是welcome-->
- </body>
<body> 你好啊亲爱滴,我等你很久了 此页在conf目录下<br> 这个页面是welcome1.jsp <!--上面这个是识别文本,让我们看是跳转到welcome1还是welcome--></body>
最后需要在index.jsp里新加一个表单来让其跳转到Hi.action
- <body>
- <form action="Conf.action" method="post">
- <table align="center">
- <caption><h3>用户登录</h3></caption>
- <tr>
- <td>用户名:<input type="text" name="username"/></td>
- </tr>
- <tr>
- <td>密 码:<input type="text" name="password"/></td>
- </tr>
- <tr align="center">
- <td colspan="2"><input type="submit" value="登录"/>
- <input type="reset" value="重填"/></td>
- </tr>
- </table>
- </form>
- <!-- 下面这个是新加的表单,提交到Hi.action -->
- <form action="Hi.action" method="post">
- <table align="center">
- <caption><h3>提交到Hi</h3></caption>
- <tr>
- <td>用户名:<input type="text" name="username"/></td>
- </tr>
- <tr>
- <td>密 码:<input type="text" name="password"/></td>
- </tr>
- <tr align="center">
- <td colspan="2"><input type="submit" value="登录"/>
- <input type="reset" value="重填"/></td>
- </tr>
- </table>
- </form>
- </center>
- </body>
<body><form action="Conf.action" method="post"> <table align="center"> <caption><h3>用户登录</h3></caption> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录"/> <input type="reset" value="重填"/></td> </tr> </table> </form> <!-- 下面这个是新加的表单,提交到Hi.action --> <form action="Hi.action" method="post"> <table align="center"> <caption><h3>提交到Hi</h3></caption> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录"/> <input type="reset" value="重填"/></td> </tr> </table> </form> </center></body>
现在我们可以打开tomcat,然后打开http://127.0.0.1:8888/Struts2Study/conf/index.jsp来测试了
当我们在上面和下面的表单里输入的不正确时,都时跳转到error.jsp,但是输入正确的话,上面的时跳转
到welcome.jsp(输入featherfly),下面是跳转到welcome1.jsp(输入yufei)
- Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明
- struts.xml配置说明
- struts 2 核心配置
- Struts 2核心配置文件struts.properties和struts.xml
- struts2—核心配置struts.xml
- 自学SSH框架之---struts(一):struts的配置
- web.xml之配置Struts
- J2EE(02) struts-config.xml 配置说明
- struts.xml文件的配置说明
- Struts2关于struts.xml文件配置说明
- Struts 2 配置struts.xml骨架
- Java自学笔记之深入理解struts.xml和常用配置
- struts.xml配置文件说明
- struts.xml constant说明
- Struts struts-config.xml 配置
- struts 2.0 struts.xml 配置
- Struts struts-config.xml配置
- struts-config.xml配置2
- 在线超级查询大全,没有什么是查不到的(个人收集)
- 饿
- 机器翻译 (NOIP2010)复赛 提高组 试题一 解题代码
- structs.xml配置说明
- 乌龟棋 (NOIP2010)复赛 提高组 试题二 解题代码
- Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明
- 八数码游戏分析+源码——启发式搜索(二)
- 北京调试时,指针重指向
- 关押罪犯 (NOIP2010)复赛 提高组 试题三 解题代码
- c++中短路求值的妙用
- 函数式编程介绍之极简版
- CSS笔记总结
- 4.引水入城 (NOIP2010)复赛 提高组 试题四 解题代码
- Ubuntu常用快捷键和命令