struts的action配置
有个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分了, 不好意思啦 --------------------编程问答-------------------- 这个URL可以有2种解释方法:
一、命名空间是:test/* 。login是action 那么这个test/*可以匹配:命令空间是以test/开头的
比如test/loginModual 所以你配置命名空间时,就不要像你写的那样还写个* 而是换成具体的空间名。
二、test是命名空间 */login是action名。
比如: 各个模块需要自己登陆,当然这个比如不太恰当,换果换成信息列表,还说的过去一点。。后来你也懂的
就是说你配的时候把*换成具体就OK了。 --------------------编程问答--------------------
lz有个误区, 你的url已经是*了。。那实际的配置文件就不要再用*了。。。都是*怎么匹配,必须要保证一方是实际的值。。。才有匹配的参照。。。
就像认识人一样。。。
你不认识A,A不认识你。。。怎么可能找到对方。。。总要有一方认识。。。 --------------------编程问答--------------------
不错,很好。。。 --------------------编程问答-------------------- 这与namespace有什么关系啊
<action path="login" class="com.test.LoginAction" parameter="method"/>
<forward name="aa" path="/.../.../xxx.jsp" />
</action>
直接login.do?method=aa不就可以了吗
而且干嘛非要在路径中使用* --------------------编程问答-------------------- 楼主可以试一下这种方法。。。
<package name="login" namespace="/login_*" extends="struts-default"></package>
测试通过~~
不知道解决楼主疑问没? --------------------编程问答-------------------- 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>
希望 能够帮到你! --------------------编程问答-------------------- 用urlrewrite... --------------------编程问答-------------------- 我没有表述清楚, 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改怎样去写 --------------------编程问答-------------------- 楼主,我给你的就是struts2 的配置 --------------------编程问答--------------------
恩恩,\(^o^)/~, 谢谢。
但是有种情况是这样子的,加入我需要删除某一个组,接口已经定好把组的id加在url中,比如像这样的格式:
http://localhost:8080/ServerTest/test/login/<groupId>, 但是这个groupId对于不同的组都是不一样的,我想要匹配类似于http://localhost:8080/ServerTest/test/login/ + 任意字符串的url, 这样的url应该怎样去写匹配的action呢那个?? --------------------编程问答-------------------- namespace="test/*" 试试看这样行吗 --------------------编程问答--------------------
这种方式之前有试过,行不通 --------------------编程问答-------------------- 刪掉namespace試試行不行 --------------------编程问答-------------------- 感觉应该不行吧
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>
类似的形式不能满足需要吗? --------------------编程问答--------------------
<package name="configuration" extends="struts-default">
<action name="*/login" class="com.test.LoginAction" method="getConfigurations"/>
</package>
试了下,貌似这样就行……不用namespace --------------------编程问答-------------------- 谢谢大家帮忙,还是没有解决问题,换其它方式了, rest的框架
补充:Java , Java EE