我是刚进公司的菜鸟,公司给了我一个项目让我看我也不知道从哪里看起,项目用的是Ext + struts 2.0 + ibatis 组成请教各位大哥大姐!谢谢

解决方案 »

  1.   

    我找不到项目入口,我只懂struts 2.0 其他两个技术我都没学过!
      

  2.   

    我的经验:先从登陆看起。最好能让项目跑起来。然后找到Login或者Logon之类的路径,从登录的Action中直接看进去。看通了登录,走一个完整的请求、回应的流程就差不多了。基层的配置只需看看即可。
      

  3.   


    看web中struts的拦截配置,然后看struts.xml文件
    看这个项目用到的技术,struts应该是主要的处理啊,入口就是struts配置文件,ibatis是用来处理数据的,你主要先看action,知道action处理的是什么,接受哪些请求,返回哪些数据这样,然后运行看是不是你理解的
      

  4.   

    先看系统的功能,然后找个Ext和ibatis的demo看看。。然后再看程序,从开始看,用debug一步一步的调。看一下主程序,看一个模块。。比较烦,至少我嫌烦。。
      

  5.   

    这是struts.xml的
    <struts>
        <include file="struts-default.xml"/>
        <constant name="objectFactory" value="spring"></constant>    
        <constant name="struts.i18n.encoding" value="UTF-8"></constant> 
        <constant name="struts.multipart.maxSize" value="209715200"></constant>     <package name="scttsc-default" extends="struts-default" >   
        <!--
            <interceptors>            <interceptor name="login" class="com.sctt.system.sys.user.interceptor.CheckLoginInterceptor"/>
                <interceptor-stack name="teamwareStack">
                 <interceptor-ref name="defaultStack"/>
                    <interceptor-ref name="login"/>
                    
                </interceptor-stack>        </interceptors>
        <default-interceptor-ref name="teamwareStack" />
    -->
    <global-results>
    <result name="login">/index.jsp</result>
    <result name="Exception_all">/Error.jsp</result>
    </global-results>
    <action name="getList" class="srit.sm.action.SmAction" method="getList"></action>
    <action name="insertSm" class="srit.sm.action.SmAction" method="insertSm"></action>
    <action name="deleteSm" class="srit.sm.action.SmAction" method="deleteSm"></action>
    <action name="getSmkay" class="srit.sm.action.SmAction" method="getSmkay"></action>
    <action name="updateSm" class="srit.sm.action.SmAction" method="updateSm"></action>
    <action name="updatemedical" class="srit.sm.action.SmAction" method="updatemedical"></action>
    <action name="getconditions" class="srit.sm.action.SmAction" method="getconditions"></action>
    <action name="Insar" class="srit.sm.action.SmAction" method="Insar"></action>
    <action name="getwar" class="srit.sm.action.SmAction" method="getwar"></action>
    <action name="getmedical" class="srit.sm.action.SmAction" method="getmedical"></action>
    <action name="getcomboxmedical" class="srit.sm.action.SmAction" method="getcomboxmedical"></action>
    <action name="insertmedical" class="srit.sm.action.SmAction" method="insertmedical"></action>
    <action name="deletemedical" class="srit.sm.action.SmAction" method="deletemedical"></action>
    <action name="getuserAll" class="srit.sm.action.PctAction" method="getuserAll"></action>
    <action name="insertuser" class="srit.sm.action.PctAction" method="insertuser"></action>
    <action name="deleteuser" class="srit.sm.action.PctAction" method="deleteuser"></action>
    <action name="insertWszbzJm" class="srit.sm.action.CivilAction" method="insertWszbzJm"></action>
    <action name="getWszbzJm" class="srit.sm.action.CivilAction" method="getWszbzJm"></action>
    <action name="inserScjrfy" class="srit.sm.action.CivilAction" method="inserScjrfy"></action>
    <action name="updatesoldiers" class="srit.sm.action.CivilAction" method="updatesoldiers"></action>
    <action name="updateWszbzJm" class="srit.sm.action.CivilAction" method="updateWszbzJm"></action>
    <action name="getScjrfy" class="srit.sm.action.CivilAction" method="getScjrfy"></action>
    <action name="getScjrfy1" class="srit.sm.action.CivilAction" method="getScjrfy1"></action>
    <action name="getScjrfy2" class="srit.sm.action.CivilAction" method="getScjrfy2"></action>
    <action name="updatescjrfy" class="srit.sm.action.CivilAction" method="updatescjrfy"></action>

    <action name="getScJr" class="srit.sm.action.CivilAction" method="getScJr"></action>
    <action name="insertScJr" class="srit.sm.action.CivilAction" method="insertScJr"></action>
    <action name="updateScJr" class="srit.sm.action.CivilAction" method="updateScJr"></action>
    <action name="getuserid" class="srit.sm.action.SmAction" method="getuserid"></action>
    <action name="getAll" class="srit.sm.action.yyyaopAction" method="getAll"></action>
    <action name="insertYYyaop" class="srit.sm.action.yyyaopAction" method="insertYYyaop"></action>
    <action name="delete_yyyp" class="srit.sm.action.yyyaopAction" method="delete_yyyp"></action>
    <action name="getcombox" class="srit.sm.action.SmAction" method="getcombox"></action>
    <action name="getcombo" class="srit.sm.action.PctAction" method="getcombo"></action>

     <action name="findList" class="srit.sm.action.DoctorAction" method="findList"></action>
        <action name="find" class="srit.sm.action.DoctorAction" method="find"></action>
        <action name="updateDoctor" class="srit.sm.action.DoctorAction" method="updateDoctor"></action>
        <action name="insertDoctor" class="srit.sm.action.DoctorAction" method="insertDoctor"></action>
        <action name="deleteDoctor" class="srit.sm.action.DoctorAction" method="deleteDoctor"></action>
        <action name="getcombo" class="srit.sm.action.DoctorAction" method="getcombo"></action>
       
       
        <action name="finds" class="srit.sm.action.SeeDoctorAction" method="finds"></action>
        <action name="updateDoctors" class="srit.sm.action.SeeDoctorAction" method="updateDoctors"></action>
        <action name="insertDoctors" class="srit.sm.action.SeeDoctorAction" method="insertDoctors"></action>
        <action name="deleteDoctors" class="srit.sm.action.SeeDoctorAction" method="deleteDoctors"></action>   
       <action name="insertWork" class="srit.sm.action.WorkAction" method="insertWork"></action>
       <action name="findWork" class="srit.sm.action.WorkAction" method="findWork"></action>   <action name="getKeShiAll" class="srit.sm.action.KeShiAction" method="getKeShiAll"></action>
       <action name="inserjzjl" class="srit.sm.action.KeShiAction" method="inserjzjl"></action>
       <action name="getselectgh" class="srit.sm.action.KeShiAction" method="getselectgh"></action>
        <action name="getjzjlAll" class="srit.sm.action.KeShiAction" method="getjzjlAll"></action>
       <action name="insertgh" class="srit.sm.action.KeShiAction" method="insertgh"></action>
       <action name="deletegh" class="srit.sm.action.KeShiAction" method="deletegh"></action>
       <action name="insertkeshi" class="srit.sm.action.KeShiAction" method="insertkeshi"></action>
       <action name="deteleKsShiById"   class="srit.sm.action.KeShiAction" method="deteleKsShiById" ></action>
       <action name="getdoctor_ksid"   class="srit.sm.action.KeShiAction" method="getdoctor_ksid" ></action>
        <action name="deupKsShiById"   class="srit.sm.action.KeShiAction" method="deupKsShiById" ></action>
    <action name="getMedical_idAll"   class="srit.sm.action.KeShiAction" method="getMedical_idAll" ></action>
       <action name="getregionid" class="srit.sm.action.SmAction" method="getregionid"></action>
       <action name="sessionrem" class="srit.sm.action.SmAction" method="sessionrem"></action>
        </package>
        
    </struts>
    这个是applicationContext.xml的
    <beans>
    <bean id="subjectDataSource"
    class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName">
    <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property name="url">
     <value>jdbc:oracle:thin:@10.164.11.144:1521:ngdata</value>
    </property>
    <property name="username">
    <value>qms_shsy</value>
    </property>
    <property name="password">
    <value>qms_shsy</value>
    </property>
    <property name="initialSize">
    <value>5</value>
    </property>
    <property name="maxActive">
    <value>10</value>
    </property>
    </bean> <bean id="testSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation">
    <value>classpath:sqlMap-config.xml</value>
    </property>
    <property name="dataSource">
    <ref bean="subjectDataSource" />
    </property> </bean>
    <bean id="sqlMapClientTemplate"
    class="org.springframework.orm.ibatis.SqlMapClientTemplate">
    <property name="sqlMapClient">
    <ref bean="testSqlMapClient" />
    </property>
    </bean>
    <bean id="transactionManager"  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">   
            <property name="dataSource">   
                <ref bean="subjectDataSource" />  
            </property>   
        </bean> 
        <bean id="transactionProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">   
            <property name="beanNames">   
                <list>   
                    <value>*Service</value>   
                </list>   
            </property>   
            <property name="interceptorNames">   
                <value>transactionInterceptor</value>   
            </property>   
        </bean>
        <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">   
           <property name="transactionManager">   
               <ref local="transactionManager" />   
           </property>   
           <property name="transactionAttributes">   
               <props>   
                  <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>   
               </props>   
           </property>   
        </bean>
              

     <bean id="yyap" class="srit.sm.dao.yyyaopDaoImpl" autowire="byName">
      <property name="sqlMapClient">
      <ref bean="testSqlMapClient"/>
      </property>
     </bean>
     <bean id="yyapservice" class="srit.sm.service.yyaopServiceImpl" autowire="byName"></bean>
     

     <bean id="smdao" class="srit.sm.dao.SmmedicineDaoImpl" autowire="byName">
      <property name="sqlMapClient">
      <ref bean="testSqlMapClient"/>
      </property>
     </bean>
     <bean id="service" class="srit.sm.service.SmServiceImpl" autowire="byName"></bean>
     
      <bean id="logindao" class="srit.sm.dao.LoginDaoImpl" autowire="byName">
      <property name="sqlMapClient">
      <ref bean="testSqlMapClient"/>
      </property>
     </bean>
     <bean id="loginservice" class="srit.sm.service.LoginServiceImpl" autowire="byName"></bean>
     
    <!--suntianlong  end  -->
    </beans>
    他给我的数据库里好多表我没做过这个项目也不知道都是哪些所以没有头绪!
      

  6.   

    这个连注释都没有啊,真牛的代码,而且还是用到spring的,struts上边就配置了拦截器拦截用户登录的吧
    然后下面就是用到的action和对应的方法,你要看页面上哪些用到了这些action
    spring里的配置比较普遍,一个是数据库连接,一个是事务配置,还有AOP切面
    这些暂时可以不用管还有,最重要的,和项目组里的人多交流,不会就去问,看不懂就去问,不要怕人家笑话。
      

  7.   

    顶10楼的。DEBUG一下,跟进方法里面去一个一个的看
      

  8.   

    ext  貌似是个 js 的框架集吧,Ext + struts 2.0 + ibatis 。  struts 2.0 吧 细心一点 。 看页面是怎么跳转的。 根据action  里面的 返回值。 一个个虑。 我就不信搞不通。 
      

  9.   


    我想说一个action的CRUD就分那么多个<action>,为什么不用<action>下的<result>呢
      

  10.   

    login 登陆页面 ,然后根据配置文件 后台找方法,下断点 debug无它法!刚开始慢慢来
      

  11.   

    这还算好的了,好歹那些跳转什么的都很清楚。我遇到过一个项目,全部是用的注解你根本就不可能通过配置文件来查看项目结构
    ibatis还好,只是数据访问的一种框架而已,这部分看看代码就会基本使用了基本都在跟数据库打交道。多看看别人的代码就很容易用了。struts2还是很好用的。上手也比较简单
    多看看,最好能把项目运行起来边运行边看代码会比较好
      

  12.   

    先挑一个功能模块,从页面看起,每个细节都要弄清楚。action中不明白的类和方法就ctrl+鼠标左键,查看原类。直到这个模块全搞清楚,项目就能上手开支做了