对于Struts的DispathAction是对Action的一种瘦身方式。下面就针对其建立过程做一个简略的介绍。
1. 建立一个类文件,其中类文件继承DispatchAction
public class AdminAction extends DispatchAction {
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
……………..(在这里把前面的代码省去了)
if(UserSessionServlet.isNotUserSession(request, response)){
ld.addAdmin(DBConnection.getConn(),user);
List userlist=ld.findAllUsers(DBConnection.getConn());
request.setAttribute("userlist", userlist);
return mapping.findForward("add_success"); //关键
}else{
return mapping.findForward("error");
}
}
public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
……………..(在这里把前面的代码省去了)
if(UserSessionServlet.getsession()!=null){
ld.delAdmin(DBConnection.getConn(), id);
List userlist=ld.findAllUsers(DBConnection.getConn());
request.setAttribute("userlist",userlist);
return mapping.findForward("del_success");//关键
}else
{
return mapping.findForward("error");
}
}
}
当然在这里也可以复写execute方法,但是注意一点的是复写的时候注意将其转向使用父类的转向。
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//代码段
return super.execute(mapping, form, request, response);
}
2. 配置xml文件。
<action path="/admin"
type="bjsydx.test.action.AdminAction"
name="loginForm"
scope="request"
parameter="command"
>
<forward name="add_success" path="/user/userlist.jsp"></forward>
<forward name="del_success" path="/user/userlist.jsp"></forward>
<forward name="error" path="/login/login.jsp"></forward>
</action>
3. 在网页文件中写链接,这里就写一个举例。
<form action="../admin.do?command=add" method="post">
注意admin为配置文件中的path对应的值,后面接的command是parameter的值,add是DispatchAction中对应的方法。
4. 下面就是运行了。
还有一个就是struts的模式匹配。这个是针对按照某种规范编码时,采用的一种模式匹配方式。{0}表示带上前面的虚拟路径,{1}表示不带,因此写路径的时候需要依情况而定,这里不做具体的介绍。是时候看下正则表达式了,听其名而未闻其详啊。上次一个网络实习的单位还说需要用到正则表达式,看来是需要点时间琢磨下了。
还有一个是ForwordAction,这个不难,上网搜一下就成,不做介绍了。互联网就是老师,嘿嘿。给大爷笑一个!