我刚入职不久,新手上路。请各位多多指教别人做好的一个web项目(springMvc)要我继续加工。
我的工作就是把做好的手机端页面整合进此项目。userAction 里的一个方法 sendMessage()
主要功能就是给手机发个验证码。此方法完成后是跳转到一个pc端的页面。于是我就想主要的代码不用修改,只要在跳转页面的路径上下工夫即可。然后问题在这:sendMessage()中的代码很多,
第一部分是取参数做判断、处理和set参数给下个页面使用,此部分代码有10几行。第二部分是建立http连接去调用发信息的接口并且对结果做一些判断和处理。此部分代码有30几行。本来我的想法是就在他的类里加一个方法:@RequestMapping("/send_message_mobile")
public String sendMessage_mobile(){
  String result=sendMessage();
  return "去手机页面";
}这样的做法是不用写多少代码。但是要对每个action的每个方法都加多一个手机版的方法。这样会让类变臃肿,我觉得这样不太好。于是我想这样:public class UserAction_mobile extends UserAction{
  @RequestMapping("/send_message_mobile")
  @Override
  public String sendMessage(){
    String result=super.sendMessage();
    return "去手机页面";
  }
}但是启动报错, 想问公司的前辈,但他们很忙,只是说这样会路径重复之类的,我听不懂,第一次使用springmvc 。   疑难杂症暂不提它,
我放弃了这种做法。
最后。其实这也是我最先想到的办法
就是把代码抽到一个service中,这样就可以让UserAction_mobile不用继承UserAction来实现复用。
代码的第二部分是明显可以抽到一个MessageService中复用。
但是第一部分那些参数操作就让人纠结了:
1.代码也不少
2.要是放到service里的话就要传request和session这些东西过去,貌似不合理,有隐患。
3.如果第一部分不抽出来的话。那么在userAction_mobile.sendMessage()里又要重复第一部分的代码。
这该如何是好?
复用重构action参数request

解决方案 »

  1.   

    mvc去网上先把简单的搞明白后再开发。
      

  2.   

    不知道换个思路可以否?为什么一定要继承呢?public class UserAction_mobile{
      @RequestMapping("/send_message_mobile")
      public String sendMessage(){
        String result=new UserAction().sendMessage();
        return "去手机页面";
      }
    }
      

  3.   

    分数不是我不想给,我就只有那点分了。
    public class UserAction_mobile{
      @RequestMapping("/send_message_mobile")
      public String sendMessage(){
        String result=new UserAction().sendMessage();
        return "去手机页面";
      }
    }
    UserAction 里面有一些字段是要spring注入的。这样直接new不行。要先取bean工厂。
    还有没有其他办法?
    我问题的重点就是要在UserAction_mobile中最大程度的复用UserAction中的方法,具体看原题;之前的继承是为了更好的凸显出这两个类的关系。
    因为UserAction_mobile就是对UserAction的扩展。
    继承是因为报了错才放弃的。
    大家对继承这个做法感觉怎样?是不应该这样做的还是可以继续往这方面走