Struts2学习之package配置

本文详细介绍了在Struts框架中如何通过包配置来管理Action和拦截器,包括包的基本配置、命名空间配置以及如何避免Action重名等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 包配置

struts框架中,是通过包配置来管理Action和拦截器的。在包中可以配置多个Action和拦截器。再struts.xml配置文件中,包是通过<package>元素来配置的。

包配置在struts.xml中的配置格式如下:

<package name= "包名" extends="包名" namespace="/命名空间">……</package>

 

<package>元素的常用属性如下所示:

  1. name:指定包名,是供其它包继承的时候使用的属性,必选项。
  2. extends:指定要继承的包名。可选项。
  3. namespace:指定包的名称空间。可选项。
  4. abstract:指定该包是否是一个抽象包。如果该包是一个抽象包,包中不能定义Action

 

包的配置(struts.xml)

<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">……
<packagename="loginReg" extends="struts-default"namespace="/">
<!--
对Action的配置可以有多对;name为业务逻辑层,该名是在表单中指定的地址;class指定Action类的位置。
--!>
<actionname="loginReg" class="action.LoginRegAction">
<!--
定义两个四个逻辑视图和物理资源之间的映射,name值是Action返回的结果,即逻辑视图。
-->
<resultname="login_success">/login_success.jsp</result>
<resultname="login_error">/login_error.jsp</result>
<resultname="reg_success">/reg_success.jsp</result>
<resultname="reg_error">/reg_error.jsp</result>
</action>
</package>
……</span></span>

配置包时必须指定name属性,只有指定了这个属性后此包才可以被引用。extends属性用来指定该包继承于其它包,其值必须是另外一个包的名称。通过继承,子包可以继承父包的Acting和拦截器。上述代码定义的包名是loginReg,继承的包是struts-default,该包是struts框架的默认包。

  1. 命名空间配置

Java语言中为了避免同名的Java类冲突,可以使用包。例如,两个Login.java文件存在同一个包中是不允许的,但是如果分别在不同的两个包中是可以的。同样Struts2的配置中,也存在同名的Action命名的问题。

命名空间再struts.xml中的配置格式如下:

<package name= "包名" extends="包名" namespace="/命名空间">……</package>

 

例如在项目中的不同模块中都需要一个LoginAction,如果用户在访问时不加以区分,项目就会出现问题。

 

命名空间的配置(struts.xml)

<span style="font-family:KaiTi_GB2312;font-size:18px;">……
<package name="login" extends="struts-default">
	<action name="login" class="action.login.LoginAction">
		<result name="success">/login/success.jsp</result>
		<result name="error">/login/error.jsp</result>
	</action>
</package>
<!-- 配置loginReg包,继承自login,包名称空间/loginReg -->
<package name="loginReg" extends="login" namespace="/loginReg">
	<action name="login" class="action.loginReg.LoginAction">
		<result name="success">/loginReg/success.jsp</result>
		<result name="error">/loginReg/error.jsp</result>
	</action>
</package>
……
</span>

在上述代码中定义了两个包:loginloginReg,其中login继承了struts-default包,loginReg继承了login包,两个包中都定义了Action(LoginAction)。包login没有指定namespace属性,默认值是""loginReg指定命名空间为namespace="/loginReg",说明用户请求发那个文该包下所有的Action时,URL应该是名称空间(namespace+Action

  1. 注意:

name是供其它包继承的时候使用的属性,packagename不可重复。

namespace是用来解决Action重名的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值