上一个实例中已经演示过了jsp页面是如何使用契约优先得方式访问,主要通过访问jsp页面来检查环境配置是否完好。本次重点介绍如何使用契约优先的方式访问Action,下面就开始:
第一:创建一个普通的Action类,命名FirstAction,代码如下:
packagecom.xt.s2conversion02.actions;
import com.opensymphony.xwork2.ActionSupport;
public class FirstAction extends ActionSupport {
@Override
public Stringexecute() throws Exception {
System.out.println("executein FirstAction#execute!");
//本例只想重点演示如何通过URL访问到我们的Action,至于视图的显示后面
//再说,所以只返回null
return null;
}
}
以上代码注意观察标注红色地方,即actions,因为在struts2的官方文档中有这么一句First the Convention plugin finds packages named struts, struts2, action or actions.意思是说Convention plugin只会把位于struts、struts2、action和actions这几个包中的action进行预处理(即可以通过特定的url来访问action不需要额外配置),所以我们要注意,如果你的Action放在除以上几个包的其他包中,很可能失败。
第二:访问测试---打开浏览器输入http://yourhost:yourport/yourappname/first 至于yourhost之类的是什么意思,可以参照之前的一篇里面的解释,这里不再赘述。我这里使用的是:http://localhost:8080/s2conversion02/first。结果如图
当然网页中没有内容,以为之前解释过,FirstAction没有跳转到任何视图,而且FirstAction本身也没有输出任何信息所以整个页面是空白的。但是在控制台输出了“execute in FirstAction#execute!”可以说明Action访问是成功的!通过上面的结果可以看出来,struts2的url生成规律是把XXXAction映射成xXX。
第三:补充----如果有更多其他的Action位于actions子包下面,例如:
类的完整名称 | 映射的命名空间 | 映射的URL |
com.ghpan.actions.MainAction | / | /main |
com.ghpan.actions.products.Display(补充Display实现Action接口) | /products | /products/display |
com.ghpan.struts.company.details.ShowCompanyDetailsAction
| /company/details
| /company/details/show-company-details
|
通过上面的表格我想坑定能够彻底明白conversion plugin的url映射规律了。