struts 2 核心配置

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

Java代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "struts-2.0.dtd">   
  5. <!-- 根元素是Struts -->   
  6. <struts>   
  7.   
  8. </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元素的父元素

Java代码 复制代码
  1. <struts>   
  2.     <package>   
  3.         <action name="" class="">            
  4.         </action>   
  5.     </package>   
  6. </struts>  
<struts>
	<package>
		<action name="" class="">			
		</action>
	</package>
</struts>



-
-

接下来我们就在实践中去看各个元素以及属性的实际用法
我们打开第一篇文章中用到的项目,如果没有请到这里下载

新建一个包yufei.conf,在这个包下新建一个strutsconf.xml,这是个struts的配置文件,我们需要在struts.xml中
引入这个文件(因为前面已经提过了,struts2默认载入WEB-INF/classes 路径下的 struts.xml)

strutsconf.xml

Java代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5. <struts>   
  6.        
  7. </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文件,在<!-- ********** -->之间的是新加的内容
代码中会用注释来说明

Java代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5. <struts>     
  6.     <package name="yufei.hello" extends="struts-default">    
  7.         <action name="Login" class="yufei.hello.HelloAction">   
  8.             <result name="error">/error.jsp</result>   
  9.             <result name="success">/welcome.jsp</result>   
  10.         </action>   
  11.     </package>   
  12.        
  13.     <!--    
  14.         该元素是struts的子元素   
  15.         该元素只有一个属性 file,即需要倒入的外部配置文件   
  16.         下面这个写法基本就是其标准形式了   
  17.     -->   
  18.     <!-- ******************************************** -->   
  19.     <include file="yufei/conf/strutsconf.xml" />   
  20.     <!-- ******************************************** -->   
  21. </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文件夹下的标识


Java代码 复制代码
  1. <!--修改index.jsp中form表单的action为下面这样 -->   
  2. <form action="Conf.action" method="post">  
<!--修改index.jsp中form表单的action为下面这样 -->
<form action="Conf.action" method="post">


Java代码 复制代码
  1. <body>   
  2.    你是谁啊,我根本不认识你,再不离开我放狗了   
  3.    此页在conf目录下   
  4.    <!--上面conf目录这句提示在welcome.jsp和error.jsp中都加上,好识别跳转到的是哪里 -->   
  5.  </body>  
 <body>
    你是谁啊,我根本不认识你,再不离开我放狗了
    此页在conf目录下
    <!--上面conf目录这句提示在welcome.jsp和error.jsp中都加上,好识别跳转到的是哪里 -->
  </body>




在yufei.conf包内新建一个类HelloAction
注意,这个类比起以前那个类多了一个方法


Java代码 复制代码
  1. package yufei.conf;   
  2.   
  3. public class HelloAction   
  4.     {   
  5.     private String username;   
  6.     private String password;   
  7.     public String getPassword()   
  8.         {   
  9.         return password;   
  10.         }   
  11.     public void setPassword(String password)   
  12.         {   
  13.         this.password = password;   
  14.         }   
  15.     public String getUsername()   
  16.         {   
  17.         return username;   
  18.         }   
  19.     public void setUsername(String username)   
  20.         {   
  21.         this.username = username;   
  22.         }   
  23.     public String execute()   
  24.         {   
  25.         String strReturn = "error";   
  26.         if (username.equals("yufei"))   
  27.             strReturn = "success";   
  28.         return strReturn;   
  29.         }   
  30.     public String userMethod()   
  31.         {   
  32.         String strReturn = "error";   
  33.         if (username.equals("featherfly"))   
  34.             strReturn = "success";   
  35.         return strReturn;   
  36.         }   
  37.     }  
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配置文件

Java代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5. <struts>   
  6.     <package name="yufei.conf.package" extends="struts-default">   
  7.         <action name="Conf" class="yufei.conf.HelloAction">   
  8.             <result name="success">/conf/welcome.jsp</result>   
  9.             <result name="error">/conf/error.jsp</result>   
  10.         </action>   
  11.     </package>   
  12. </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)和一个负责"处理"的类

Java代码 复制代码
  1. <!--    
  2.     name表示*.action前面那部分这里即是表示Conf.action   
  3.     class表示使用哪个类来处理此请求   
  4.     method 是可选属性,表示使用哪个方法来处理,   
  5.            如果缺此项默认调用类中的execute()方法   
  6. -->   
  7. <action name="Conf" class="yufei.conf.HelloAction" method="方法名">   
  8. </action>  
	<!-- 
		name表示*.action前面那部分这里即是表示Conf.action
		class表示使用哪个类来处理此请求
		method 是可选属性,表示使用哪个方法来处理,
		       如果缺此项默认调用类中的execute()方法
	-->
	<action name="Conf" class="yufei.conf.HelloAction" method="方法名">
	</action>



接下来我们再来做一个试验,我们将strutsconf.xml再修改一下,给action添加一个method来改变执行方法

Java代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5. <struts>   
  6.     <!--    
  7.         这是上面配置的,现在将其注释起来,在复制一份,然后给其添加method属性   
  8.         由于刚才我们新建那个HelloAction类里除了execute()方法外,还有一个   
  9.         userMethod()方法   
  10.         要调用的方法必需符合以下三个条件   
  11.         1 是public 2 返回String 3 没有参数   
  12.     <package name="yufei.conf.package" extends="struts-default">   
  13.         <action name="Conf" class="yufei.conf.HelloAction">   
  14.             <result name="success">/conf/welcome.jsp</result>   
  15.             <result name="error">/conf/error.jsp</result>   
  16.         </action>   
  17.     </package>   
  18.      -->   
  19.   
  20.     <package name="yufei.conf.package" extends="struts-default">   
  21.         <!-- 指定userMethod -->   
  22.         <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">   
  23.             <result name="success">/conf/welcome.jsp</result>   
  24.             <result name="error">/conf/error.jsp</result>   
  25.         </action>   
  26.     </package>   
  27. </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

Java代码 复制代码
  1. <action name="Conf">   
  2. </action>  
<action name="Conf">
</action>



-
-

最后剩下result了,result是Action执行后返回的字符串

Java代码 复制代码
  1. <result name="success">/conf/welcome.jsp</result>   
  2. <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等等),所以其基本形式和一些变型会在下面给出

Java代码 复制代码
  1. <action name="referen" class="yufei.conf.HelloAction">   
  2.     <!-- 基本形式 -->   
  3.     <result name="success" type="dispatcher">   
  4.         <param name="location">/conf/welcome.jsp</param>   
  5.     </result>   
  6.     <!--    
  7.         如果location是唯一的参数,象上面这个,还可以改写为下面形式    
  8.         如果result标签对中间没有 param 标签,就把result标签对中间   
  9.         的文本作为location   
  10.     -->   
  11.     <result name="success" type="dispatcher">/conf/welcome.jsp</result>   
  12.     <!-- 如果type是"dispatcher",类似于servlet标准中ServletDispatcher的forward-->   
  13.     <result name="success">/conf/welcome.jsp</result>   
  14.     <!-- 如果name是"success",还可以继续简化 -->   
  15.     <result>/conf/welcome.jsp</result>   
  16. </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里都要写出来,象下面那样

Java代码 复制代码
  1. <package name="yufei.conf.package" extends="struts-default">   
  2.     <!-- 在这个包下,两个action结果为error时,都会返回/conf/error.jsp -->   
  3.     <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">   
  4.         <result name="success">/conf/welcome.jsp</result>   
  5.         <result name="error">/conf/error.jsp</result>   
  6.     </action>   
  7.     <action name="Hi" class="yufei.conf.Hi">   
  8.         <result name="success">/conf/welcome1.jsp</result>   
  9.         <result name="error">/conf/error.jsp</result>   
  10.     </action>   
  11. </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修改如下

Java代码 复制代码
  1. <?xml version="1.0" encoding="GBK"?>   
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5. <struts>   
  6.     <!--    
  7.         这是上面配置的,现在将其注释起来,在复制一份,然后给其添加method属性   
  8.         由于刚才我们新建那个HelloAction类里除了execute()方法外,还有一个   
  9.         userMethod()方法   
  10.         要调用的方法必需符合以下三个条件   
  11.         1 是public 2 返回String 3 没有参数   
  12.     <package name="yufei.conf.package" extends="struts-default">   
  13.         <action name="Conf" class="yufei.conf.HelloAction">   
  14.             <result name="success">/conf/welcome.jsp</result>   
  15.             <result name="error">/conf/error.jsp</result>   
  16.         </action>   
  17.     </package>   
  18.      -->   
  19.     <!--  把这里注释起来   
  20.     <package name="yufei.conf.package" extends="struts-default">   
  21.         <!-- 指定userMethod -->   
  22.         <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">   
  23.             <result name="success">/conf/welcome.jsp</result>   
  24.             <result name="error">/conf/error.jsp</result>   
  25.         </action>   
  26.     </package>   
  27.     -->   
  28.     <!-- 这里是新加的内容 -->   
  29.     <package name="yufei.conf.package" extends="struts-default">   
  30.         <!--    
  31.             这里声明了一个全局结果   
  32.             这就是代表,这个包下的所有action执行的返回结果是error   
  33.             就都会跳转到/conf/error.jsp   
  34.             继承此包的包的action也如此(当然在你覆盖了会是你覆盖后的配置)   
  35.         -->   
  36.         <!-- ******************************************** -->   
  37.         <global-results>   
  38.             <result name="error">/conf/error.jsp</result>   
  39.         </global-results>   
  40.         <!-- ******************************************** -->   
  41.         <action name="Conf" class="yufei.conf.HelloAction" method="userMethod">   
  42.             <result name="success">/conf/welcome.jsp</result>   
  43.         </action>   
  44.         <action name="Hi" class="yufei.conf.Hi">   
  45.             <result name="success">/conf/welcome1.jsp</result>             
  46.         </action>   
  47.     </package>   
  48. </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,只是多了点识别文本

Java代码 复制代码
  1. <body>   
  2.     你好啊亲爱滴,我等你很久了   
  3.     此页在conf目录下<br>   
  4.     这个页面是welcome1.jsp   
  5.     <!--上面这个是识别文本,让我们看是跳转到welcome1还是welcome-->   
  6. </body>  
<body>
    你好啊亲爱滴,我等你很久了
    此页在conf目录下<br>
    这个页面是welcome1.jsp
    <!--上面这个是识别文本,让我们看是跳转到welcome1还是welcome-->
</body>




最后需要在index.jsp里新加一个表单来让其跳转到Hi.action

Java代码 复制代码
  1. <body>   
  2.     <form action="Conf.action" method="post">   
  3.         <table align="center">   
  4.         <caption><h3>用户登录</h3></caption>   
  5.             <tr>   
  6.                 <td>用户名:<input type="text" name="username"/></td>   
  7.             </tr>   
  8.             <tr>   
  9.                 <td>密  码:<input type="text" name="password"/></td>   
  10.             </tr>   
  11.             <tr align="center">   
  12.                 <td colspan="2"><input type="submit" value="登录"/>   
  13.                 <input type="reset" value="重填"/></td>   
  14.             </tr>   
  15.         </table>   
  16.     </form>       
  17.        
  18.     <!-- 下面这个是新加的表单,提交到Hi.action -->   
  19.     <form action="Hi.action" method="post">   
  20.         <table align="center">   
  21.         <caption><h3>提交到Hi</h3></caption>   
  22.             <tr>   
  23.                 <td>用户名:<input type="text" name="username"/></td>   
  24.             </tr>   
  25.             <tr>   
  26.                 <td>密  码:<input type="text" name="password"/></td>   
  27.             </tr>   
  28.             <tr align="center">   
  29.                 <td colspan="2"><input type="submit" value="登录"/>   
  30.                 <input type="reset" value="重填"/></td>   
  31.             </tr>   
  32.         </table>   
  33.     </form>    
  34.     </center>   
  35. </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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值