以前没这么用过请问是如何实现比如 art.do?action=showList  转到action方法便执行对应的 showList 方法     art.do?action=showArtCont 转到action方法便执行对应的 showArtCont 方法

解决方案 »

  1.   

    继承DispatchAction,我写的一个例子
    package mytra.controller;
    import java.io.*;
    import javax.servlet.http.*;
    import org.apache.struts.action.*;
    import org.apache.struts.upload.FormFile;
    import org.apache.struts.actions.DispatchAction;
    import mytra.bo.*;
    import mytra.domain.ReguBean;
    import java.util.List;public class ReguAction extends DispatchAction {    public ActionForward insertRegu(ActionMapping mapping,
                                     ActionForm actionForm,
                                     HttpServletRequest servletRequest,
                                     HttpServletResponse servletResponse) throws IOException {
           ReguDao op = (ReguDao)DaoConfig.getDaoManager().getDao(ReguDao.class);
           UploadSaver us = new UploadSaver();
           String dir = getServlet().getServletContext().getRealPath("/images");
           ReguBean regu = (ReguBean) actionForm;
           FormFile ff = regu.getPicture();
           if(ff!=null) {
               us.saveFile(ff,dir);
               regu.setPicname(us.getPicname());
           }
           op.insertRegu(regu);
           return mapping.findForward("success");
        }    public ActionForward updateRegu(ActionMapping mapping,
                                     ActionForm actionForm,
                                     HttpServletRequest servletRequest,
                                     HttpServletResponse servletResponse) {
           ReguDao op = (ReguDao)DaoConfig.getDaoManager().getDao(ReguDao.class);
           ReguBean regu = (ReguBean) actionForm;
           op.updateRegu(regu);
           return mapping.findForward("success");
        }    public ActionForward deleteRegu(ActionMapping mapping,
                                     ActionForm actionForm,
                                     HttpServletRequest servletRequest,
                                     HttpServletResponse servletResponse) {
           ReguDao op = (ReguDao)DaoConfig.getDaoManager().getDao(ReguDao.class);
           ReguBean regu = (ReguBean) actionForm;
           int id = regu.getRegId();
           op.deleteRegu(id);
           return mapping.findForward("success");
        }    public ActionForward getRegu(ActionMapping mapping,
                                     ActionForm actionForm,
                                     HttpServletRequest servletRequest,
                                     HttpServletResponse servletResponse) {
           ReguDao op = (ReguDao)DaoConfig.getDaoManager().getDao(ReguDao.class);
           ReguBean regu = (ReguBean) actionForm;
           int id = regu.getRegId();
           regu = op.getReguBean(id);
           servletRequest.setAttribute("reguBean",regu);
           return mapping.findForward("listOne");
        }
        public ActionForward listRegu(ActionMapping mapping,
                                     ActionForm actionForm,
                                     HttpServletRequest servletRequest,
                                     HttpServletResponse servletResponse) {
           ReguDao op = (ReguDao)DaoConfig.getDaoManager().getDao(ReguDao.class);
           ReguBean regu = (ReguBean) actionForm;
         //  Collection lt = new ArrayList();
           HttpSession ses = servletRequest.getSession(true);
           List lt = op.getRegsList(regu);
           ses.setAttribute("regsList",lt);
           return mapping.findForward("listAll");
        }}
      

  2.   

    在art这个action里面最后转向的页面改成类就行了
    String action=request.getParameter("action");
    if(action=="showList"){
    return mapping.findForward("showList");}
    else{
    return mapping.findForward(" showArtCont");}}
      

  3.   

    要2楼的那种形式,但是看你的代码还不够清晰,可否给个思路和相关API参考
      

  4.   

    应该是要1楼的那种形式只要继承DispatchAction 就可以实现了吗?给个答案,结贴。
      

  5.   

    没错.只有继承了DispatchAction,同时你在 struts-config.xml 配置method=action那么DispatchAction接受到参数为action=doList,就回执行 doList()方法.查看DispatchAction的原代码,你会看到代码是全部请求都会到 execute()方法处理.
    execute()方法会判断action的值是多少,然后调用action值对应的方法.
      

  6.   

    <action />添加属性parameter="method"(依你所列举的应该是parameter="action")
    接下来就如1楼所写一样,创建相应方法:showlist(参数),showArtcont(参数)就OK了!记住继承DispatchAction类,不是普通Action类。
      

  7.   

    可以在action中利用request.getParameter("action")得到action参数以后,根据其值进行相应处理