标签:
Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类:
以上三种Action的实现方式都可以被struts2框架自动识别,如果你在struts.xml里面配置了一个action块但是没有配置action类的路径,这样框架默认使用ActionSupport来处理请求。
但是在实际使用struts2的过程中我发现了一个问题,一个Action只有一个execute方法来处理一类请求,如果我开发的某块功能有100个不同的请求那我岂不是要写100个Action类,每个类实现一个execute方法,这样虽然满足了一个类一个责任的设计原则,但是会不会造成“类爆炸”?后来看了struts2的文档才知道,其实我们可以使用struts2灵活的通配符配置来达到减少action类的目的:
先来看看一个简单的时序图
请求从这个页面发起,只是简单的两个链接
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <a href="infoadd">ADD INFO</a><br> <a href="infodel">DEL INFO</a><br> </body> </html>
请求的控制转发是在struts.xml里面配置的
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="mypack" extends="struts-default"> <action name="info*" class="com.stone.struts2.action.MyFirstAction" method="{1}"> <result>/{1}info.jsp</result> <allowed-methods>add,del</allowed-methods> </action> </package> </struts>
上面这个XML的配置内容有几点需要注意:
看看这个Action类
public class MyFirstAction extends ActionSupport { public String add() { return SUCCESS; } public String del() { return SUCCESS; } }
这个demo是为了测试struts2的通配符配置,所以两个JSP里面的内容只是返回一句话而已,这里我就不贴出来了,现在看看调用,我点第一个链接:
点第二个链接
由此可见,struts2的通配符配置真的是很灵活很强大滴,这样我们在实际项目开发中可以少写很多Action类并减少很多配置。
标签:
原文地址:http://www.cnblogs.com/stonefeng/p/5809639.html