有个url的地址是: http://localhost:8080/ServerTest/test/*/login。 其中*代表任意字符串,用servlet来配置可以写成 /test/*/login的形式;可是用struts来配置, 不知道改怎么配置?<package name="configuration" extends="struts-default" namespace="/test/*">
<action name="login" class="com.test.LoginAction" method="getConfigurations"/>

</package>
 这样行不通。
帮忙看看,谢谢了,分数全家当只有35分了, 不好意思啦

解决方案 »

  1.   

    这个URL可以有2种解释方法:一、命名空间是:test/*  。login是action  那么这个test/*可以匹配:命令空间是以test/开头的   比如test/loginModual   所以你配置命名空间时,就不要像你写的那样还写个* 而是换成具体的空间名。二、test是命名空间 */login是action名。       比如: 各个模块需要自己登陆,当然这个比如不太恰当,换果换成信息列表,还说的过去一点。。后来你也懂的   就是说你配的时候把*换成具体就OK了。
      

  2.   


    lz有个误区, 你的url已经是*了。。那实际的配置文件就不要再用*了都是*怎么匹配,必须要保证一方是实际的值才有匹配的参照就像认识人一样
    你不认识A,A不认识你怎么可能找到对方总要有一方认识
      

  3.   

    这与namespace有什么关系啊
    <action path="login" class="com.test.LoginAction" parameter="method"/>
    <forward name="aa" path="/.../.../xxx.jsp" />
    </action>
    直接login.do?method=aa不就可以了吗
    而且干嘛非要在路径中使用*
      

  4.   

    楼主可以试一下这种方法
    <package name="login" namespace="/login_*" extends="struts-default"></package>
    测试通过~~不知道解决楼主疑问没?
      

  5.   

    struts.xml  置配  如果访问可以例如:http://localhost:8080/Test/student/stu.action
    <package name="Test" extends="json-default" namespace="/student">
    <action name="stu" class="stuAction" method="selectAll">
    <!--<result name="select" type="json">
    <param name="root">dataBean</param><!-- 用jquery 返回的list -->
    </result>-->
                       <result name="select">/jsp/scuess.jsp</result>
    </action> 
        </package>说明:<package name="Test"  这个写项目名称,extends="json-default" 设定 json类型 
    namespace="/student" 加上一个命名空间,注意:在这加上时,在访问项目action 时也要加上这个命名空间,要不然找不到所要得到的action>
    <action name="stu" 命名的一个action ,class="与Spring注入的名字一至" method="selectAll" 默认的action 方法> 
    <result name="对应的Action return 返回值一至">要到的页面</result>
    希望 能够帮到你!
      

  6.   

    我没有表述清楚, url里是没有*号的,但是每次login的请求url是不一样的
    比如:
    第一次:  http://localhost:8080/ServerTest/test/aaa/login
    第二次:  http://localhost:8080/ServerTest/test/bbb/login
    第三次:  http://localhost:8080/ServerTest/test/ccc/login
    这样子的,如果使用servlet只要/test/*/login这样去过滤就可以,但是不清楚换成struts改怎样去写      
      

  7.   

    楼主,我给你的就是struts2 的配置 
      

  8.   

    恩恩,\(^o^)/~, 谢谢。
    但是有种情况是这样子的,加入我需要删除某一个组,接口已经定好把组的id加在url中,比如像这样的格式:
    http://localhost:8080/ServerTest/test/login/<groupId>, 但是这个groupId对于不同的组都是不一样的,我想要匹配类似于http://localhost:8080/ServerTest/test/login/ + 任意字符串的url, 这样的url应该怎样去写匹配的action呢那个??
      

  9.   

    namespace="test/*"   试试看这样行吗
      

  10.   

    感觉应该不行吧servlet是没有namespace的,所以通配符*只是表示路径
    struts中的package是有namespace的,也就是每个package的作用于是一个namespace,<package>标签的作用也只是配置一个package吧。lz这样配置是想在多个namespace中配置同样的package,而且还不告诉namespace的具体名称,逻辑上不通吧一定要这样的形式么?
    <package name="configuration" extends="struts-default">
    <action name="*login" class="com.test.LoginAction" method="getConfigurations"/></package>
    或者
    <package name="configuration" extends="struts-default">
    <action name="*login" class="com.test.{1}.LoginAction" method="getConfigurations"/></package>
    类似的形式不能满足需要吗?
      

  11.   

    <package name="configuration" extends="struts-default">
    <action name="*/login" class="com.test.LoginAction" method="getConfigurations"/></package>试了下,貌似这样就行……不用namespace
      

  12.   

    谢谢大家帮忙,还是没有解决问题,换其它方式了, rest的框架