struts2 路径问题

原来我的struts2配置如下,完全正常:

struts2
org.apache.struts2.dispatcher.FilterDispatcher


struts2
/*

后来要开发webservice,加入了CXF,因为也要配置web.xml:

cxf
org.apache.cxf.transport.servlet.CXFServlet


cxf
/services/*

这样发现因为struts2配置的是/*,所以会对所有操作拦截,也会拦截webservice的调用,所以把struts2的配置改成了以下:

struts2
org.apache.struts2.dispatcher.FilterDispatcher


struts2
[color=red]/action/*[/color]

这样调用webservice正常了,但是struts2却出了问题,原来的action,除了在根目录下的文件中调用的可以正常之外,其它的全都不可以访问了,举个例子:
在webcontext/cms下有一个epg.html文件,在它的文件中原来调用action,是直接写的:url=“epg.action“,但是现在改成了url="action/epg.action",在firefox中发现有错误,原来路径发生错误:本来应该是http://localhost:8080/project/action/epg.action,但是它却变成了http://localhost:8080/project/cms/action/epg.action,路径当然不一样了,但是我很不解,原来配置的/*为什么可以,这个不就是/action/*吗?就加了一个action,怎么和具体路径挂起来了,原来不是说action不和具体调用的文件路径挂钩吗?

/action/* 这中写法不提倡 最好是/*.action 中间不要加 ‘/’因为 /在web里面有很多 路径上的含义。除非你完全弄懂 否则不要用

我的文章 [url]http://chenchangqun11.iteye.com/blog/831530[/url]中有关于‘/’的讲解 希望可以帮到你

另外 url 最好写绝对路径

你的写法 和Struts2的命名空间挂上钩了 看看Struts2的命名空间吧 默认的命名空间是/