action2的一个方法涉及到一些service的使用,这些service又调用了dao进行hql数据库查询;
我现在如何在action1(或者随便一个普通类)的一个方法中调用action2的这个方法呢?我直接new了调用的话,action2里面用到的service又需要自己新建,我再手动初始化新建了service,紧接着service用到的dao又需要新建,到最后dao查询数据库时候的hibernate session还是为null,不知道从哪里获取了.
问题总结起来就是,我之前是用来响应web页面的action逻辑,现在要求socket接收到一个特定指令后也走这个逻辑,可以直接用这个action的逻辑么?还是怎么写?ssh内部调用action

解决方案 »

  1.   

    Service service = (Service)WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext()).getBean("servicename");
    在action1中获得service
    或者你在spring配置文件中把service注入到action1中
      

  2.   

    你可以将action2里面的方法另外用一个类封装,然后在action1里面和action2里面都可以调用这个共用方法。不要想着在action 里面调用另外一个action里面的方法,这个思路是不对的。
      

  3.   

    功能划分不明确,
    既然涉及到业务,把那部分代码放到service如何,action负责控制嘛
      

  4.   

    你每个Action就应该负责一个功能的控制,要是功能相似就写不同的execute方法,一个Action一般不会调用另外一个Action,你那service业务处理好就行了、、
      

  5.   

    action1 的方法 redirect 到action2的方法。  
      

  6.   

    也不是action之间的调用,项目要求是socket监听到一些指令后(比如客户端请求最新版本号),服务器端需要查询数据库返回客户端数据. 之前是用httpclient通过url的形式访问服务器端action(ssh架构),逻辑都做好了.现在改成socket传输的话,没了url请求serverlet,struts的响应封装不是很清楚,所以想问下我还能不能继续用ssh框架完成对socket的响应?怎么样继续使用hibernate查询数据库(因为我尝试注解@Autowired的service get方法不好用,自己new 的service到了dao层又是hibernate session为null之类的问题)?
      

  7.   

    用sping ApplicationContext的getBean获取serviceBean解决