项目总结(Ajax+Struts+Spring+Hiberante+SQLServer2000) 第一部分

总算将一个项目勉强上线,也是第一次我独立完成的这么多任务,框架设计、框架搭建、代码编写、测试、数据库创建、表结构设计……除了页面和详细设计我都做了个遍,虽然很仓促也犯了很多错误,但是整个过程走下来,发现自己真的学到不少东西。在这个空档期写个小总结,以便以后使用 :)

 现在框架真是多的要死,也没有什么真正能一统天下的东西,每个人的着眼点和技术习惯都不同,在刚接到项目的时候,老大就要我自己去确定框架。当时我正沉迷于TapeStry+Spring+iBatis开发的畅快之中,当时真想直接将自己的东西移植过去,但是一想公司陆续会有其他人进来加入到项目中,那么TSS这个框架肯定很难找到合适的人选,而且自己在研究TSS的过程中也发现由于文档的缺乏,遇到问题的解决就是一个很严重的问题,最终只能弃用。虽然我很喜欢T4,但是它实在不让人放心,只好期待Howard能给我们不断带来惊喜,真正成为继Struts、WebWork之后的最优选择。有时间我还会继续学习T4,并做一下总结。

经过当时的考虑,我只得放弃TSS,最终选择自己相对熟悉的Struts+Spring+Hibernate,说是熟悉,那是因为以前的项目是用这个,有网友戏称SSH是庸俗组合,呵呵,庸俗就庸俗吧,我想自己能把这套东西搞好也会有相当的难度的(现在证明这个选择是对的,出了问题有人问,项目组的其他人也都是玩这套东西的,维护扩展都方便)。

 

具体细节就不再描绘了,做软件的都知道问题无法解决是多么的折磨人,这其中的酸甜苦辣只有经历过的人才知道,技术上的问题是遇到一个解决一个,实在觉得解决不了或者没有把握,利马换其他想法,这个很重要,实现的方法有很多,即便不是最优的解决方案,但是节省的大量的时间,在工期紧的时候一定要权衡的去考虑,否则后果不堪设想。

总体框架(SSH)需要4个重要的配置文件:

1.web.xml

 

<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"
>
< web-app >
    
< display-name > sample </ display-name >
    
< context-param >  
        
< param-name > contextConfigLocation </ param-name >  
        
< param-value > /WEB-INF/applicationContext.xml </ param-value >  
    
</ context-param >  
    
<!-- OpenSessionInViewFilter配置,其实是一个又繁琐性能又低的东西,以后再也不想用到 -->
    
< filter >
        
< filter-name > OpenSessionInViewFilter </ filter-name >
        
< filter-class > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </ filter-class >
        
<!--  singleSession默认为true,若设为false则等于没用OpenSessionInView  -->  
        
< init-param >  
            
< param-name > singleSession </ param-name >  
            
< param-value > true </ param-value >
        
</ init-param >
    
</ filter >
    
< filter-mapping >  
        
< filter-name > OpenSessionInViewFilter </ filter-name >  
        
< url-pattern > /* </ url-pattern >  
    
</ filter-mapping >
    
<!-- encoding -->
    
< filter >
        
< filter-name > Set Character Encoding </ filter-name >
        
< filter-class > com.shpcims.util.SetCharacterEncodingFilter </ filter-class >
        
< init-param >
            
< param-name > encoding </ param-name >
            
< param-value > utf-8 </ param-value >  
        
</ init-param >
    
</ filter >
    
< filter-mapping >
        
< filter-name > Set Character Encoding </ filter-name >
        
< servlet-name > action </ servlet-name >
    
</ filter-mapping >
    
<!-- Spring Context listener -->
    
< listener >  
        
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >  
    
</ listener >

    
    
< servlet >
        
< servlet-name > action </ servlet-name >
        
< servlet-class > org.apache.struts.action.ActionServlet </ servlet-class >
        
< init-param >
            
< param-name > config </ param-name >
            
< param-value > /WEB-INF/struts-config.xml </ param-value >
        
</ init-param >
        
< init-param >
            
< param-name > debug </ param-name >
            
< param-value > 3 </ param-value >
        
</ init-param >
        
< init-param >
            
< param-name > detail </ param-name >
            
< param-value > 3 </ param-value >
        
</ init-param >
        
< load-on-startup > 1 </ load-on-startup >
    
</ servlet >
    
< servlet-mapping >
    
< servlet-name > action </ servlet-name >
        
< url-pattern > *.do </ url-pattern >
    
</ servlet-mapping >
    
    
    
< welcome-file-list >
        
< welcome-file > index.jsp </ welcome-file >
    
</ welcome-file-list >
    
    
< taglib >
        
< taglib-uri > /WEB-INF/struts-bean.tld </ taglib-uri >
        
< taglib-location > /WEB-INF/struts-bean.tld </ taglib-location >
    
</ taglib >
    
< taglib >
        
< taglib-uri > /WEB-INF/struts-html.tld </ taglib-uri >
        
< taglib-location > /WEB-INF/struts-html.tld </ taglib-location >
    
</ taglib >
    
< taglib >
        
< taglib-uri > /WEB-INF/struts-logic.tld </ taglib-uri >
        
< taglib-location > /WEB-INF/struts-logic.tld </ taglib-location >
    
</ taglib >
    
< taglib >
        
< taglib-uri > /WEB-INF/struts-tiles.tld </ taglib-uri >
        
< taglib-location > /WEB-INF/struts-tiles.tld </ taglib-location >
    
</ taglib >
    
< taglib >
        
< taglib-uri > /WEB-INF/CustomTag.tld </ taglib-uri >
        
< taglib-location > /WEB-INF/tags/CustomTag.tld </ taglib-location >
    
</ taglib >
</ web-app >

2.Struts-config.xml

<? xml version="1.0" encoding="UTF-8"  ?>
<! DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"
>
< struts-config >
    
    
<!--  forms  -->
    
< form-beans >
        
< form-bean  name ="loginForm"  type ="com.shpcims.web.login.form.LoginForm"   />      </ form-beans >
    
< global-forwards >
        
< forward  name ="web_report"  path ="/reporter" />
        
< forward  name ="report_fail"  path ="/WEB-INF/jsp/SystemError.jsp" />
    
</ global-forwards >
    
    
<!--  actions  -->
    
< action-mappings >
        
< action  path ="/LoginAction"
                type
="org.springframework.web.struts.DelegatingActionProxy"
                scope
="request"
                name
="loginForm"
                validate
="true"
                input
="/index.jsp" >
            
< forward  name ="success"      path ="/CreditInfoPreAction.do"   />
            
< forward  name ="fail"          path ="/index.jsp"   />
        
</ action >
        
    
</ action-mappings >
    
    
<!--  Custmoer Controller for Authentication  -->
    
< controller >
       
< set-property  property ="processorClass"  value ="com.shpcims.framework.CustomerRequestProcessor"   />
    
</ controller >
    
    
<!--  Message-resources  -->
    
< message-resources  parameter ="ApplicationResources"   />
    
    
<!--  plug-in  -->
    
<!--  tiles template  -->
    
< plug-in  className ="org.apache.struts.tiles.TilesPlugin"   >
        
< set-property  property ="definitions-config"  value ="/WEB-INF/tiles-defs.xml"   />
        
< set-property  property ="definitions-debug"  value ="2"   />
        
< set-property  property ="definitions-parser-details"  value ="2"   />
        
< set-property  property ="definitions-parser-validate"  value ="true"   />
    
</ plug-in >
    
<!--  spring plug-in  -->
    
< plug-in  className ="org.springframework.web.struts.ContextLoaderPlugIn" >
        
< set-property  property ="contextConfigLocation"  value ="/WEB-INF/beans.xml"   />
    
</ plug-in >     
    
<!--  Validator plugin  -->
    
< plug-in  className ="org.apache.struts.validator.ValidatorPlugIn" >
        
< set-property
            
property ="pathnames"
                value
="/WEB-INF/validaterule/validator-rules.xml,
               /WEB-INF/validaterule/validation.xml
        "
/>
    
</ plug-in >
</ struts-config >

3.applicationContext.xml

 

<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
 
< beans >
    
<!--  service  -->
    
< bean  id ="chartService"  parent ="baseTransactionProxy" >
        
< property  name ="target" >
            
< bean  class ="com.shpcims.service.ChartServiceImpl" >
            
</ bean >
        
</ property >
    
</ bean >     
    
    
<!--  dao  -->
    
< bean  id ="customDao"  class ="com.shpcims.dao.CustomDaoImpl" >
        
< property  name ="sessionFactory"  ref ="sessionFactory"   />
    
</ bean >
<!--  配置sessionFactory, 注意这里引入的包的不同  -->
    
< bean  id ="sessionFactory"  class ="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
        
< property  name ="dataSource"  ref ="dataSource"   />
        
<!--  mappingResources  -->
        
< property  name ="mappingResources" >
            
< list >
                
< value > com/shpcims/model/Area.hbm.xml </ value >              </ list >
        
</ property >
        
< property  name ="hibernateProperties" >
            
< props >
                
< prop  key ="hibernate.dialect" > org.hibernate.dialect.SQLServerDialect </ prop >
                
<!--  开发期间为true  -->
                
< prop  key ="hibernate.show_sql" > true </ prop >
            
</ props >
        
</ property >
    
</ bean >
    
    
< bean  id ="baseTransactionProxy"  class ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
          abstract
="true" >
        
< property  name ="
分享到:
评论

你可能感兴趣的:(spring,bean,Ajax,Web,struts)