Struts2.0实现零配置..自己学习看看

[size=medium]自从ror热潮席卷web开发界以来,惯例优于配置的快速开发理念便深入人心。

struts2中对action name支持通配符配置,所以使其方便的实现零配置成为可能。

实现零配置后的开发会是怎样,开发员不用配置struts.xml,也不用在action代码中写annotation,是真正干净的零配置。以下的代码是我们希望达到的效果。
action示例
package net.jacker.ww.sys;

public class UserAction extends BaseAction {



public String execute() throws Exception {

return "default";
// default表示使用缺省页面,路径名和action所在包和类名相关,为 /sys/User.jsp
}

public String roles(){

return view("/sys/UserRoles"); // 指定展示页面为 /sys/UserRoles.jsp
}


public String xxxx(){

return redirect("/sys/User.do"); // 重定向,url为 /sys/User.do

}


}

以上action的三个方法无需配置,将可以分别用以下链接进行访问:
http://localhost:8080/sys/User.do
http://localhost:8080/sys/User!roles.do
http://localhost:8080/sys/User!xxxx.do(将重定向到User.do)


下面我们来看看以上零配置是如何做到的。
首先,我们需要在struts.xml中做如下的配置。
<struts>
<constant name="struts.enable.SlashesInActionNames" value="true" /> <!-- action名可以有'/'字符 -->
<constant name="struts.action.extension" value="do"/> <!-- .do为访问扩展名 -->

<package name="default" extends="struts-default">

<!-- 通配符配置,匹配所有的URL对action的访问 -->
<action name="*/*!*" class="net.jacker.ww.{1}.{2}Action" method="{3}">
<result name="default" type="dispatcher">/{1}/{2}.jsp</result>
<result name="view" type="dispatcher">${viewpath}.jsp</result>
<result name="redirect" type="redirect">${viewpath}</result>
</action>
<action name="*/*" class="net.jacker.ww.{1}.{2}Action">
<result name="default" type="dispatcher">/{1}/{2}.jsp</result>
<result name="view" type="dispatcher">${viewpath}.jsp</result>
<result name="redirect" type="redirect">${viewpath}</result>
</action>
</package>

</struts>


然后是写一个Action基类,BaseAction.java
package net.jacker.ww;

import com.opensymphony.xwork2.Action;


public abstract class BaseAction implements Action{



String viewpath; //该属性会在struts.xml中用到

public String view(String vpath){
viewpath = vpath;
return "view";
}

public String redirect(String vpath){
viewpath = vpath;
return "redirect";
}


public String getViewpath() {
return viewpath;
}



}

做好以上的基础工作,你的action类只要继承BaseAction,符合XxxAction的命名规则,放到对应的包下,页面也放到对应的路径,就可以无需配置而访问了。

如果要替换view层也很简单,只要对struts.xml做简单修改,比如:

<result name="default" type="dispatcher">/{1}/{2}.jsp</result>

改为

<result name="default" type="velocity">/{1}/{2}.vtl</result>

修改后的struts将统一使用velocity模板取代jsp作为页面展示层。

注意:
实测后发现,以上零配置的做法只在struts2.0.11版本中可以使用,在struts2.0.XX的更高版本中却未能获通过,这不能不说是个遗憾。
[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值