在Struts框架中,可以通过动态方法调用使用通配符的方式,实现对请求URL的自动解析,从而找到对应的Action类及其方法进行处理。
以下是使用通配符的完整攻略:
1. 配置struts.xml
在struts.xml中,可以配置动态方法调用的命名空间及通配符等参数。如下所示:
<package name="example" namespace="/" extends="struts-default">
<action name="/*/list" method="{1}List" class="com.example.action.{1}Action">
<result name="success">/list.jsp</result>
</action>
</package>
该配置的意义是在命名空间/下,匹配以/list结尾的请求URL,并根据通配符*匹配对应的Action类名。同时,method属性的值为{1}List,表示调用Action类中的名称为{1}List的方法进行处理。
2. 编写Action类
在编写Action类时,可以根据配置中的通配符,定义与URL对应的方法。如上面的配置中,URL中的*将对应到Action类名,如example。
package com.example.action;
public class ExampleAction {
public String exampleList() {
// 处理方法
return "success";
}
}
在以上示例中,对应的URL为/example/list,因为*匹配了Example,method属性的值也为exampleList,所以调用的是ExampleAction类中的exampleList方法。
3. 运行测试
在编译部署好应用后,在浏览器中输入匹配规则的URL,即可自动调用对应的方法进行处理。
例如,通过URL访问/example/list,即可自动调用ExampleAction类中的exampleList方法进行处理,并返回指定的结果页面。
另一种示例是:在配置文件中配置通配符匹配多个参数,如下:
<action name="/*/view/*" method="{1}View" class="com.example.action.{1}Action">
<param name="id">{2}</param>
<result name="success">/view.jsp</result>
</action>
以上配置的意义是在命名空间/下,匹配以/view结尾的请求URL,并根据通配符匹配对应的Action类名。同时,method属性的值为{1}View,表示调用Action类中的名称为{1}View的方法进行处理。另外,再次匹配到的是请求URL中的参数,通过param标签的name属性指定。
package com.example.action;
public class ExampleAction {
public String exampleView(String id) {
// 处理方法
return "success";
}
}
在以上示例中,对应的URL为/example/view/123,因为匹配了Example,method属性的值为exampleView,再次匹配到了请求URL中的参数123,所以调用的是ExampleAction类中的exampleView方法,并将参数传入。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts中动态方法调用使用通配符 - Python技术站