谁有 url url为什么有个.actionn edito...

配置Action(一)----包和命名空间 - CSDN博客
配置Action(一)----包和命名空间
本文摘自 李刚 《Java EE 企业应用实战》
实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让struts2的哪个Action处理哪个请求,也就是完成用户请求和Action之间的关系。我们可以认为struts2的基本“程序单位”。
&&&&&&& Struts2使用包来组织Action,因此,将Action定义在包定义下完成,定义Action通过使用package下的action子元素来完成,而每个package元素配置一个包。
&&&&&&& Struts2框架中的核心组件就是Action和拦截器,Struts2框架使用包来管理Action和拦截器等,每个包就是多个Action、多个拦截器、多个拦截器引用的集合。
&&&&&&& 配置package元素是必须指定name属性,这个属性是引用该包的唯一标识,除此之外,还可以指定一个可选的extends属性,extends属性必须是另一个包的name属性。指定extends属性表示让该包继承另一个包,子包可以从一个或者多个父包中继承到拦截器、拦截器栈、action等配置。
&&&&&& 除此之外,Action2还提供了一种所谓的抽象包,抽象包的意义是该报不能包含Action的定义。为了显示指定一个包是抽象包,可以为该package元素增加一个abstract = &true&属性。
&&&&&& 在struts.xml文件中,package 元素用于定义包配置,每个package元素定义一个包配置,定义package时可以指定如下几个属性:
&&&&&& (1) name: 这是一个必须的属性,该属性指定该包的名字,该名字是该包被其他包引用的key。
&&&&&& (2) extends: 该属性是一个可选属性,该属性指定该报继承其他包。继承其他包,就可以继承其他包中的Action定义、拦截器定义等。
&&&&&& (3) namespace: 该属性是一个可选属性,该属性定义该包的命名空间。
&&&&&& (4) abstract: 该属性是一个可选属性,他指定该包是否是一个抽象包,在抽象包中不能有package属性。
&&&&&&& 因为Struts2的配置文件时从上到下进行处理,所以父包应该在子包的前面定义。
&&&&&&& 下面是一个简单的struts.xml文件配置文件范例。在下面的struts.xml文件中配置两个包,其中名为default的包,继承了Struts2框架的默认包:struts-default。
&?xml version = &1.0& encoding = &UTF-8&?&
&!--下面是Struts2配置文件的DTD信息 --&
&!DOCTYPE struts PUBLIC
&-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&
&http://struts.apache.org/dtds/struts-2.0.dtd&&
&!--struts是struts2配置文件的跟元素 --&
&!--配置第一个包,该包名为default,继承了struts-default--&
&!--package元素是struts配置文件的核心,该元素可以出现0次,或者是无限多次 --&
&package name=&default& extends=&struts-default&&
&!--下面定义了拦截器部分--&
&!--以下的该元素可以出现,也可以不出现,但最多出现1次 --&
&interceptors&
&!--定义拦截器栈--&
&!--下面的元素可以出现0次,也可以出现无限多次 --&
&interceptor-stack name=&crudeStack&&
&!-- 下面的元素必须出现,可以出现无数多次 --&
&interceptor-ref name=¶ms& /&
&interceptor-ref name=&defaultStack& /&
&/interceptor-stack&
&/interceptors&
&!-- 下面的元素可以出现0次,也可以出现无限多次 --&
&default-action-ref name=&showcase& /&
&!--定义一个Action,该Action直接映射到showcase.jsp页面--&
&action name=&showcase& class=&& method=&& convertor=&&&
&!-- 下面的元素可以出现0次,也可以出现无限多次 --&
¶m name=&参数名&&参数值&/param&
&!-- 下面的元素可以出现0次,也可以出现无限多次 --&
&result&showcase.jsp&/result&
&!--定义一个Action,该Action类为lee.DateAction--&
&action name=&Date& class=&lee.DateAction&&
&result name=&success&&/date.jsp&/result&
&/package&
&!--定义一个名为skill的包,该包直接继承default的包--&
&package name=&skill& extends=&default& namespace=&/skill&&
&!--定义默认的拦截器引用--&
&default-interceptor-ref name=&crudeStack& /&
&!--定义一个名为Edit的Action,该Action对应的处理类是lee.SkillAction--&
&action name=&edit& class=&lee.SkillAction&&
&result&/empmanager/editskill.jsp&/result&
&interceptor-ref name=¶ms& /&
&interceptor-ref name=&basicStack& /&
&!--定义一个名为Save的Action ,该Action对应的处理类lee.SkillAction,使用skill方法作为处理方法--&
&action name=&Save& class=&lee.SkillAction&&
&result name=&input&&/empmanager/editSkill.jsp&/result&
&result name=&redirect&&edit.action?skillName=${currentSkill.name}
&/package&
&&&&&&& 上面的struts.xm文件中第一个package中定义继承了一个struts-default父包,那这个父包位于何处呢?其实它位于struts核心jar包struts2-core-2.x.x.jar文件中,只要解压该文件就能看到一个struts-default.xml文件。
&&&&&&& 从上面的配置片段就可以看出,struts2-core-2.x.x.jar里已经定义了struts-default抽象包,该包下包含了大量的结果类型定义、拦截器定义、拦截器引用定义等,这些定义是配置普通Action的基础,所以开发者的package通常应该继承于struts-default包。
&&&&&&& 注意:实际上所有struts2插件文件都会提供一个struts-plugin.xml文件,而不同的struts-plugin.xml文件会定义另一个抽象包,用于被需要使用该插件的开发者继承,所以如果我们使用struts2中的某个插件时,可能需要用到struts插件文件中的包。
二. 命名空间
&&&&&&& 从前面的内容可知,每定义一个package元素时,都可以指定一个namespace属性,用于指定该包对应的命名空间。
&&&&&& &Struts2只所以提供命名空间的功能,主要是为了处理同一个web应用中包含同名的Action的情形,Struts2以命名空间方式来管理Action,同一个命名空间中不能有相同的Action,不同的命名空间中可以有不同的Action。
&&&&&&& Struts2不支持为单独的Action设置命名空间,而是通过包指定namespace属性来为包下面的所有Action指定共同的命名空间。如果配置package时没有指定namespace属性,那么包下的所有Action处于默认的包空间下。
&&&&&&& 下面用一个应用示例来说明Struts2的命名空间的用法。看下面的struts.xml文件中的代码这份配置文件中配置两个package,并为后一个package指定了命名空间为/book。
&?xml version = &1.0& encoding = &UTF-8&?&
&!--下面是Struts2配置文件的DTD信息 --&
&!DOCTYPE struts PUBLIC
&-//Apache Software Foundation//DTD Struts Configuration 2.0//EN&
&http://struts.apache.org/dtds/struts-2.0.dtd&&
&!--struts是struts2配置文件的跟元素 --&
&!--配置国际化资源常量,指定国际化资源文件的baseName为messageResource--&
&!--下面的元素可以出现0次,也可以出现无限多次 --&
&constant name=&struts.custom.i18n.resource& value=&messageResource&/&
&!--配置名为lee的包,该包继承了struts2的默认包,没有指定命名空间,将使用默认命名空间--&
&!--package元素是struts配置文件的核心,该元素可以出现0次,或者是无限多次 --&
&package name=&lee& extends=&struts-default&&
&!--配置一个名为Login的Action--&
&action name=&login& class=&lee.LoginAction&&
&result name =&input&&/login.jsp&/result&
&result name =&error&&/error.jsp&/result&
&result name = &success&&/success.jsp&/result&
&/package&
&!--配置名为get的包,该包继承了struts2的默认包,指定该包的命名空间为/book--&
&!--package元素是struts配置文件的核心,该元素可以出现0次,或者是无限多次 --&
&package name=&get& extends=&struts-default& namespace = &/book&&
&!--配置一个名为getBooks的Action--&
&action name=&getBooks& class=&lee.GetBooksAction&&
&result name =&input&&/login.jsp&/result&
&result name = &success&&/success.jsp&/result&
&/package&
&&&&&& 在上面的struts.xml配置文件,配置两个包:lee和get,配置get包时namespace属性配置包的命名空间属性为/books。
&&&&&& 对于名为lee的包而言,该包没有指定namespace属性。如果该包没有指定namespace属性那么该包使用默认的命名空间,默认空间名总是& &。
&&&&&& 当某个包指定了命名空间后,该包下所有的Action处理的URL应该是命名空间+Action名。以上面的代码中get包为例,该包下包含了名为getBooks的Action,该Action处理的URL为:
http://localhost:8080/namespace/book/GetBooks.action
&&&&& 注意:Struts2中的命名空间的作用等同于Struts1中的模块的作用,它允许以模块化的方式来组织Action。
&&&&& 除此之外,Struts2还可以显示指定根命名空间,通过设置某个包的namespace = &/&来指定根命名空间。
&&&&&& (1) 具体路径命名空间和默认命名空间
&&&&&&& 如果请求为/barspace/bar.action,系统首先查找/barspace命名空间里名为bar的Action,如果在该命名找到对应的Action,则使用该Action处理用户的请求;否则,系统将到默认的命名空间中查找名为bar的Action,如果找到对应的Action,则使用该Action处理用户的请求;如果两个命名空间里都找不到名为bar的Action,则系统将出现错误。
&&&&& 注意:默认的命名空间里的Action可以处理任何命名空间下的Action请求。意思就是说,如果存在URL为/barspace/bar.action的请求,并且/barspace的命名空间下没有名为bar的Action,则默认命名空间下名为bar的Action也会处理用户的请求。但是根命名空间下的Action只处理根命名空间下的请求,这就是根命名空间和默认命名空间的区别。
&&&&&& (2) 根命名空间和系统默认命名空间
&&&&&&& 如果请求为/login.action,系统会根据根命名空间(&/&)中查找名为login的Action,如果在根命名空间中找到了名为login的Action,则该Action处理用户的请求;否则系统将转为在默认命名空间中寻找名为login的Action,如果默认的命名空间中有名为login的Action,则由该Action处理用户的请求。如果两个命名空间中都找不到名为login的Action,那么系统将出现错误。
&&&&& 注意:命名空间只有一个级别。如果请求的URL是/bookservice/search/get.action系统将先在/bookservice/search的命名空间下查找名为get的Action,如果在该系统命名空间内找到名为get的Action,则由该Action处理该用户的请求;如果在该命名空间中没有找到名为get的Action,系统将直接进入默认的命名空间中查找名为get的Action,而不会在bookservice的命名空间下查找名为get的Action。
本文已收录于以下专栏:
相关文章推荐
我是在看了别人的博客之后,对namespace和访问路径的关系算是搞明白了,故记录下来供大家参阅和自己以后进行查看。
假设我的struts.xml配置文件中一个action配置如下:
首先要了解什么是包的根命名空间与默认命名空间
        根命名空间,即namespace=&/&。
        默认命名空间,即...
如子模块的包名为user,则其包括如下子包:1、action包该包放置各种struts的action。命名规则:xxxUserAction.java2、dao包该包属于持久层,主要存放对“数据库底层”...
本文摘自 李刚 《Java EE 企业应用实战》
实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让stru...
今天在整合Struts2的时候死活报错了,总是提示我说找不到Action的映射,刚开始以为是路径没有写对,检查了一边路径是对的,但是为什么会提示找不到Action映射呢?难道是我没有写namespac...
在struts2的 struts.xml 配置中 例:
Xml代码  
package name=&strutsX& namespace=&/mystruts& extends...
用myeclipse做了一个最简单的表单处理servlet,可是竟然出了N多错误.MyHtml.htmlFront end to ThreeParams servlet.Taken from Core...
struts.xml配置如下:
/index.jsp
transferText.jsp
function ajaxTransferText...
本文摘自 李刚 《Java EE 企业应用实战》
实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让struts2的哪个...
Struts 命名空间的操作:
在 jsp页面的测试代码:
users/Method1.action?username=zhangsan&&测试add
users/Method2.action?u...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)博客分类:
今天遇到这样一个问题我需要获得一个action执行方法后的一个返回值。
先讲下大概思路,其实很简单,就是用Jquery的$.post来执行ajax
jQuery.post(url,[data],[callback],[type])
url:执行的action的url
[data]:传递过去的参数,假如在表单中,可以使用$("form").serialize()把form中的参数全部提交
[callback]:回调函数,这个用来获取返回值,并把返回值当做参数。例如function(responseText){}
type:可以规定返回的类型,可以返回html,text,xml,json等
我讲一下具体的解决办法,
public ActionForward doGetEditConsumeCount(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String orgIdStr = request.getParameter("orgId");
int orgId = Integer.parseInt(orgIdStr);
MasOrgInfo organ = organService.getOrganById(orgId);
String consumeType = request.getParameter("consumeType");
//消费类型
String consumeDateStart = request.getParameter("consumeDateStart"); //消费日期起始
String consumeDateEnd = request.getParameter("consumeDateEnd");
//消费日期截止
String prStart = request.getParameter("priceStart");
//实际价格原始价格
Float priceStart =
if (!prStart.equals("")) {
priceStart = Float.parseFloat(prStart);
String prEnd = request.getParameter("priceEnd");
//实际价格新价格
Float priceEnd =
if (!prEnd.equals("")) {
priceEnd = Float.parseFloat(prEnd);
String type = request.getParameter("type");
//专业类型
String packageName = request.getParameter("packageName");
//专业或包
String combo = request.getParameter("combo");
Integer comsumeNum=organService.getUpdateConsumeNum(orgId, type, packageName, combo, consumeType, consumeDateStart, consumeDateEnd, priceStart);
Long peopleNum=organService.getUpdateConsumePeopleNum(orgId, type, packageName, combo, consumeType, consumeDateStart, consumeDateEnd, priceStart);
String strNum="\n 即将修改"+comsumeNum+"条记录,共计"+peopleNum+"个账号";
response.setContentType("text/charset=utf-8"); //更改字符编码
response.getWriter().println(strNum);
//这句话是把结果返回(这个是关键)
return mapping.findForward("");
//这里返回空就好
jsp页面的js代码如下:
function update() {
if($('#type').val()!=null&&$('#type').val){
$.post("${basepath}/organ.do?o=doGetEditConsumeCount&orgId=${organ.id}&pageNum=1", $("form").serialize(),
//这里的resonseText就是action中的strNum了,这个名字可以随便起的
function(responseText){
var msg = responseText+"\n您真的确定要批量修改吗?\n\n请确认!";
if (confirm(msg)==true){
theform.action = "${basepath}/organ.do?o=doEditLotConsumes&orgId=${organ.id}";
theform.submit();
, "text");
alert("提示:请将原始价格填入“实际单价起始价格框”,新价格填入“实际单价截止价格框”");
上面的代码我其实是在回调函数里面又写了一些东西,其实可以简化为这个样子
$.post("${basepath}/organ.do?o=doGetEditConsumeCount&orgId=${organ.id}&pageNum=1", $("form").serialize(),function(responseText){alert(responseText)},"text");
浏览 12830
浏览: 305662 次
来自: 潘多拉
代码好像不完整,后端没串起来的感觉
我用这种方式去,貌似没啥效果,楼主!
这个问题常遇到,老是想不起来解决方法,记住了
在不删掉integratedSecurity=的情况 ...
取CPU号和取硬盘号,在linux下可以用吗?
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'swf动画文件修改器(url action editor)V4.05 汉化绿色版软件下载 - 绿色先锋下载 - 绿色软件下载站
赞助商链接
本类月下载排行
本类周下载排行
常用软件推荐
swf动画文件修改器(url action editor)是一款修改swf的好工具。
没有Flash源文件,有办法修改SWF动画吗?用URL Action Editor可以直接修改SWF文件的超链接,并且可以看到影片剪辑的使用情况和色彩设置、图片位置等等,还可替换库文件。现在的URL Action Editor 4.08完全支持Flash MX 2004以及以前版本,如果只想改变链接,那就太容易了,只要运行URL Action Editor并打开SWF文件,在Url Action窗口里选中一个URL链接,然后点击Edit,在下一级界面上可以看到URL命令的具体情况。以前只是2.0版本的,只能分析flash5以前的swf,这个现在可修改Flash MX 2004的。
修改动画中的URL:
运行URL ACTION EDITOR,这是个十分友好的程序界面,首先我们打开一个FLASH MTV《星语心愿》,打开的过程中URL ACTION EDITOR就会扫描并分析SWF文件,自动寻找URL链接,然后显示在程序窗口里
&&请点击以下链接下载该软件:&swf动画文件修改器(url action editor)V4.05 汉化绿色版
上一软件:
下一软件:
(评论内容只代表网友观点,与本站立场无关)
为了保证您快速的下载,推荐使用[] 、[] 等专业工具下载.
为确保软件能正常使用,请使用[
]解压本站软件.
目前不少软件都捆绑流氓插件,请在***的之时务必留意每一个***步骤.绿色先锋本身是不会捆绑任何插件在软件中的.
该软件为网上收集,若无意中侵犯了您的版权,.我们将在收信后24小时内删除侵权内
本站下载的软件中,部分软件经过压缩加密处理,解压密码为:
感谢您对绿色先锋的支持,请将网站地址放在您的博客,空间等地方,以便我们为您及您的朋友提供更好的服务.
软件按字母排列:
中文按声母搜索:

参考资料

 

随机推荐