Struts2(7):struts.xml中的<package>元素
2013-06-23 16:10
483 查看
实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。配置Action就是让Struts2知道哪个Action处理哪个请求,也就是完成用户请求和Action之间的对应关系。我们可以认为,Action是Struts2的基本“程序单位”。
Struts2使用<package>来组织Action,因此将Action定义放在包定义下完成,定义Action使用<action>元素完成。
Struts2框架中核心组件就是Action和拦截器,Struts2框架使用<package>来管理Action和拦截器。每个<package>就是多个Action、多个拦截器、多个拦截器引用的集合。
定义<package>元素时可以指定如下几个属性:
<package>元素的属性
struts2-core-2.1.8.1.jar里已经定义了struts-default抽象包,该包下包含了大量结果类型定义,拦截器定义,拦截器引用定义等,这些定义是配置普通Action的基础,所以开发者定义的package通常应该继承struts-default包。
<package>的命名空间---namespace属性:
从前面的内容可以看出,每次定义一个package元素时,都可以指定一个namespace属性,用于指定该包对应的命名空间。
Struts2之所以提供命名空间的功能,主要是为了处理同一个Web应用中包含同名Action的情形。有了命名空间的话,同一个命名空间里不能有同名的Action,不同的命名空间里可以有同名的Action。
Struts2不支持为单独的Action设置命名空间,而是通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。如果没有为<package>指定namespace属性,则该包下的所有Action处于默认的包空间下。
当某个包指定了命名空间后,该包下所有Action处理的URL应该是命名空间+Action名。譬如:
struts.xml:
login.jsp :
Struts2使用<package>来组织Action,因此将Action定义放在包定义下完成,定义Action使用<action>元素完成。
Struts2框架中核心组件就是Action和拦截器,Struts2框架使用<package>来管理Action和拦截器。每个<package>就是多个Action、多个拦截器、多个拦截器引用的集合。
定义<package>元素时可以指定如下几个属性:
属性名 | 说明 |
name | 必需的属性,指定该包的名字,该名字是该包被其他包引用的key |
extends | 可选属性,指定该包继承其他包。一般选择继承框架提供的struts-default包。 |
namespace | 可选属性,定义该包的命名空间。 |
abstract | 可选属性,指定该包是否为一个抽象包。抽象包不能包含Action定义。 |
<package>的命名空间---namespace属性:
从前面的内容可以看出,每次定义一个package元素时,都可以指定一个namespace属性,用于指定该包对应的命名空间。
Struts2之所以提供命名空间的功能,主要是为了处理同一个Web应用中包含同名Action的情形。有了命名空间的话,同一个命名空间里不能有同名的Action,不同的命名空间里可以有同名的Action。
Struts2不支持为单独的Action设置命名空间,而是通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。如果没有为<package>指定namespace属性,则该包下的所有Action处于默认的包空间下。
当某个包指定了命名空间后,该包下所有Action处理的URL应该是命名空间+Action名。譬如:
struts.xml:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <package name="demo" extends="struts-default" namespace="/test"> <action name="login" class="action.Login"> <result name="success" type="dispatcher">/ok.jsp</result> <result name="login" type="redirect">/login.jsp</result> </action> </package> </struts>上面配置文件为<package>元素指定了namespace属性为“/test”,那么此时login.jsp中的<form>的action属性就不再是"login",而是"test/login":
login.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>Insert title here</title> </head> <body> <form action="test/login" method="post"> 姓名:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html>
相关文章推荐
- struts.xml中<package ...>需要注意的地方
- Struts2通配符映射/Struts <action name="/*/*" method="{2}" class="com.jxc.action.{1}Action"> <result
- 5.Struts的<action input=""></action>:struts-config.xml
- struts的<package name="login" namespace="/system" extends="struts-default">是什么意思?
- struts2源码系列(2)--PackageConfig(对应struts.xml <package>标签)
- 2.Struts的<action unknown="true">:struts-config.xml
- <转>struts2中Convention中的basePackage与locators配置种种
- 2.Struts的<action forward="/login.jsp"></action>:struts-config.xml
- Struts2框架web.xml的<filter-class>,FilterDispatcher和StrutsPrepareAndExecuteFilter
- 在JS里面,取struts的<html:form>标签里面的<html:text property="title"/>值
- web.xml配置中的<mime-mapping>
- 解决两个标签元素过大 span 和 p标签 <ul><ol>
- Struts2-2.了解struts.xml>package>action>result的name属性
- ssh错误总结1.1----关与struts2中极为恶心的<s:action>标签问题
- <img>元素底部为何有空白?
- ecshop助理上传报错 无法连接服务器:XML 文档只能有一个顶层元素。line2 <b> Deprecated</b>:Assignig the Deprecated</b>: 7510
- AndroidManifest.xml中的<uses-feature/>以及和<uses-permission/>之间的联系
- tomcat中给server.xml加入<Context>元素
- struts2配置常量<constant name="struts.devMode">,将值修改为true(开发模式有什么好处)的好处
- JavaScript中的<noscript>元素