本人是新手,但喜欢尝试新事物。
Struts2.2.1的Annotation正如文档写的,很简单,但对于英文不好的朋友和新手可能不那么容易。好了,废话不说,开始。
首先引入struts2-convention-plugin-2.2.1.jar,然后就可以使用了。
第一,确定包:
sturts2的访问路径是http://localhost:端口/项目名/命名空间(namespace)/action名,
Convention也是一样,只不过表示形式不太一样,首先,Convention会从根package中寻找包名含有struts, struts2, action or actions 的任意packages,默认情况下,Convention会找到com.opensymphony.xwork2.Action 的实现类,或制定包中以Action 结尾的类action。
所以命名最好以struts、struts2、action、actions结束,如:com.example.actions,当然也可以通过设置更改,Convention会搜索到如下的Action
com.example.actions.MainAction com.example.actions.products.Display
(implements com.opensymphony.xwork2.Action) com.example.struts.company.details.ShowCompanyDetailsAction
第二,确定namespace:
每一个被Convention找到action都会对应一个明确的URL地址,URL以package的名字以及Action类名为基础。首先Convention从根package以及类所在的package名来确定对应的URL中的路径(namespace),以下就是根据package确定的URL namespace
com.example.actions.MainAction -> / com.example.actions.products.Display -> /products com.example.struts.company.details.ShowCompanyDetailsAction -> /company/details
//Namespace为:
/
/products
/company/details
第三 ,确定action名:
接下来Convention需要确定URL的具体资源部分。第一步取消类名中的Action,并以”-”来分割类名的其他部分,且将每个分部的首字母转为小写。如下所示Full URLs
com.example.actions.MainAction -> /main
com.example.actions.products.Display -> /products/display com.example.struts.company.details.ShowCompanyDetailsAction -> /company/details/show-company-details
//Action名为:
main
display
show-company-details
第四,确定结果页面:
Convention会默认所有的结果页面都存储在WEB-INF/content目录下,所以如果你没有更改设置,你也可以在struts的properties文件中设定struts.convention.result.path的值到一个新的路径。所以action返回的结果页面在默认在WEB-INF/content目录下,而且名字为:action名(访问路径的action名,一一地应).jsp,如:
WEB-INF/content/main.jsp
WEB-INF/content/products/display.jsp
WEB-INF/content/company/details/show-company-details.jsp
最后部署运行项目,不出意外就可以运行成功了。
访问路径依次为:
- http://localhost:端口/项目名/main.action
- http://localhost:端口/项目名/products/display.action
- http://localhost:端口/项目名/company/details/show-company-details.action
这样就跟struts.xml的配置对应上了,更多的配置参见文档,相信大家都可以明白,第一次发博,而且基本是把文档翻译了一遍,请拍。