struts2.1.8 +spring +hibernate整合及DWR异步提交

配置文件图:至于包导入的问题网上搜下:

web.xml配置文件

<? xml version="1.0" encoding="UTF-8" ?>
< web-app  id ="WebApp_9"  version ="2.4"  xmlns ="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

    
< display-name > Struts Blank </ display-name >
    
< servlet >
        
< servlet-name > dwr </ servlet-name >
        
<!--  指定Servlet的实现类  -->
        
< servlet-class > uk.ltd.getahead.dwr.DWRServlet </ servlet-class >
        
<!--  指定处于开发阶段  -->
        
< init-param >
            
< param-name > debug </ param-name >
            
< param-value > true </ param-value >
        
</ init-param >
    
</ servlet >
    
<!--  指定DWR的核心Servlet拦截的URL  -->
    
< servlet-mapping >
        
< servlet-name > dwr </ servlet-name >
        
< url-pattern > /dwr/* </ url-pattern >
    
</ servlet-mapping >


    
<!--  验证码  -->
    
< servlet >
        
< servlet-name > imagecodeservlet </ servlet-name >
        
< servlet-class > cn.com.enorth.util.imgcode.ImageCodeServlet </ servlet-class >
        
< init-param >
            
< param-name > type </ param-name >
            
< param-value > 1 </ param-value >
        
</ init-param >
        
< init-param >
            
< param-name > length </ param-name >
            
< param-value > 4 </ param-value >
        
</ init-param >
    
</ servlet >
    
< servlet-mapping >
        
< servlet-name > imagecodeservlet </ servlet-name >
        
< url-pattern > /imgcode </ url-pattern >
    
</ servlet-mapping >

    
< filter >
        
< filter-name > struts2 </ filter-name >
        
< filter-class >
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</ filter-class >
    
</ filter >

    
< filter-mapping >
        
< filter-name > struts2 </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >
    
< context-param >
        
< param-name > contextConfigLocation </ param-name >
        
< param-value > /WEB-INF/applicationContext.xml </ param-value >
    
</ context-param >
    
< listener >
        
< listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class >
    
</ listener >
    
< context-param >
        
< param-name > webAppRootKey </ param-name >
        
< param-value > trip.root </ param-value >
    
</ context-param >

    
< context-param >
        
< param-name > log4jConfigLocation </ param-name >
        
< param-value > /WEB-INF/classes/log4j.properties </ param-value >
    
</ context-param >
    
< listener >
        
< listener-class > org.springframework.web.util.Log4jConfigListener </ listener-class >
    
</ listener >
    
< welcome-file-list >
        
< welcome-file > index.jsp </ welcome-file >
    
</ welcome-file-list >

</ web-app >
log4j.properties
log4j.rootLogger = INFO, stdout, logfile
log4j.logger.com.albertsong
= DEBUG

log4j.appender.stdout
= org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout
= org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern
=% % p [ % c]  -   % m % n

log4j.appender.logfile
= org.apache.log4j.RollingFileAppender
log4j.appender.logfile.File
= ${trip.root} / WEB - INF / log / trip.log
log4j.appender.logfile.MaxFileSize
= 512KB
# Keep three backup files.
log4j.appender.logfile.MaxBackupIndex
= 3
# Pattern to output: date priority [category] 
-  message
log4j.appender.logfile.layout
= org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern
=% % p [ % c]  -   % m % n

**为自己的包名
applicationContext.xml

<? xml version="1.0" encoding="UTF-8" ?>
< beans  xmlns ="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"  xmlns:p ="http://www.springframework.org/schema/p"
    xsi:schemaLocation
="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd" >


    
< bean  id ="dataSource"  class ="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method
="close" >
        
< property  name ="driverClass"  value ="com.mysql.jdbc.Driver"   />
        
< property  name ="jdbcUrl"  value ="jdbc:mysql://localhost:3306/trip"   />
        
< property  name ="user"  value ="root"   />
        
< property  name ="password"  value ="asdtiang"   />
    
</ bean >
    
< bean  id ="sessionFactory"
        class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
        
< property  name ="dataSource"  ref ="dataSource"   />
          
        
< property  name ="mappingResources" >
            
< list >
<!-- **改为自己的路径-->
                
< value > **/User.hbm.xml
                
</ value >
                
< value > **/mysql.hbm.xml
                
</ value >             
            
</ list >
        
</ property >
        
        
< property  name ="hibernateProperties" >
            
< props >
                
< prop  key ="hibernate.dialect" >
                    org.hibernate.dialect.MySQLDialect
                
</ prop >
                
< prop  key ="show_sql" > true </ prop >
            
</ props >
        
</ property >
    
</ bean >
    
< bean  id ="userServer"  class ="**.UserServer" >
        
< property  name ="sessionFactory"  ref ="sessionFactory"   />
    
</ bean >
    
< bean  name ="registerAction"  class ="**.RegisterAction" >
        
< property  name ="userServer"  ref ="userServer"   >
        
</ property >
    
</ bean >
    
</ beans >
dwr.xml
<? xml version="1.0" encoding="UTF-8" ?>

<!--  START SNIPPET: dwr  -->
<! DOCTYPE dwr PUBLIC 
    "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" 
    "http://www.getahead.ltd.uk/dwr/dwr10.dtd"
>

< dwr >
    
< allow >
        
< create  creator ="new"  javascript ="validator" >
            
< param  name ="class"  value ="org.apache.struts2.validators.DWRValidator" />
        
</ create >
        
< convert  converter ="bean"  match ="com.opensymphony.xwork2.ValidationAwareSupport" />
    
</ allow >

    
< signatures >
        
<![CDATA[
        import java.util.Map;
        import org.apache.struts2.validators.DWRValidator;

        DWRValidator.doPost(String, String, Map<String, String>);
        
]]>
    
</ signatures >
</ dwr >
<!--  END SNIPPET: dwr  -->

struts2 action

<action name="checkUser" class="***.RegisterAction" method="checkUserExecute">
            <result name="check" type="stream">
            <param name="contentType">image/jpeg</param>
                <param name="inputName">inputStream</param>
            </result>
</action>

public   class  RegisterAction  extends  ActionSupport {
    
private  Log log  =  LogFactory.getLog(RegisterAction. class );
    
private  InputStream inputStream;
    
private  UserServerInter userServer;
    
private  UserDAO dao  =   new  UserDAO();
    
private  String userName;

    
public  String checkUserExecute()  throws  Exception {
        
try  {
            log.info(userName);
            
if  (userServer.exist(userName)) {
                
this .setInputStream( new  FileInputStream( new  File(
                        ServletActionContext.getServletContext().getRealPath(
                                
" /images/error.jpg " ))));
            } 
else  {
                
this .setInputStream( new  FileInputStream( new  File(
                        ServletActionContext.getServletContext().getRealPath(
                                
" /images/ok.jpg " ))));
            }

        } 
catch  (IOException e) {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }
        
return   " check " ;
    }

    
public  InputStream getInputStream() {
        
return  inputStream;
    }

    
public   void  setInputStream(InputStream inputStream) {
        
this .inputStream  =  inputStream;
    }

    
public  UserServerInter getUserServer() {
        
return  userServer;
    }

    
public   void  setUserServer(UserServerInter userServer) {
        
this .userServer  =  userServer;
    }

    
public  String getUserName() {
        
return  userName;
    }

    
public   void  setUserName(String userName) {
        
this .userName  =  userName;
    }

}



public   interface  UserServerInter {
    
public   boolean  exist(String username);

}


public   class  UserServer  extends  HibernateDaoSupport  implements  UserServerInter{
    @SuppressWarnings(
" unchecked " )
    
public   boolean  exist(String username) {
        System.out.println(username);
        List ls 
=  getHibernateTemplate().findByNamedQuery( " userIsExist " ,  username);///这个地方使用mysql.hbm.xml中配置的HQL语句
        
return  ls.size()  ==   1   ?   true  :  false ;
    }

}

<% @ page language = " java "  import = " java.util.*; "  pageEncoding = " utf-8 " %>

<% @ taglib prefix = " s "  uri = " /struts-tags " %>
<% @ taglib prefix = " sx "  uri = " /struts-dojo-tags " %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
    
< head >
        
< title > My JSP 'index.jsp' starting page </ title >
    
</ head >

    
< body >
        
< script  type ="text/javascript" >
    
function  changeValidateCode(obj) {
        obj.src  =   " checkUser.action?userName= "   + document.getElementById( " userName " ).value;
    }
</ script >
        
<!-- 为异步提交定义需要的url -->
        
< s:url  id ="userUrl"  action ="checkUser"   />
        
< s:textfield  id ="userName"  name ="userName"  maxlength ="10"  theme ="simple"
            onblur
="changeValidateCode(img)" />
        
<!-- 这个是指示器,当请求未完成时显示这个图片 -->
        
< img  id ="img"  src ="images/ok.jpg"  align ="center"   />
        
<!-- 这个是显示信息的目标 -->
        
< span  id ="idInfo" > 请输入你要注册的用户名 </ span >
    
</ body >
</ html >

hibernate  mysql.hbm.xml
<? xml version="1.0" encoding="UTF-8" ?>
<! DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>

< hibernate-mapping  package ="com.albertsong.bitrac.dao.query" >
<!--  
    <sql-query name="userIsExist">
        <return alias="userIsExist" class="org.jinjin.trip.User" />
        select * from user u where u.username=?
    </sql-query>
     
-->
    
< query  name ="userIsExist" >
    
<![CDATA[
      from User where username=?
      
]]>
    
</ query >
</ hibernate-mapping >
user.hbm.xml
<! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--  
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
< hibernate-mapping >
    
< class  name ="org.jinjin.trip.mysql.User"  table ="user"  catalog ="trip" >
        
< id  name ="id"  type ="java.lang.String" >
            
< column  name ="id"   />
            
< generator  class ="uuid.hex"   />
        
</ id >
        
< property  name ="password"  type ="java.lang.String" >
            
< column  name ="password"  length ="50"   />
        
</ property >
        
< property  name ="username"  type ="java.lang.String" >
            
< column  name ="username"  length ="25"  not-null ="true"  unique ="true"   />
        
</ property >
        
< property  name ="email"  type ="java.lang.String" >
            
< column  name ="email"  not-null ="true"  unique ="true"   />
        
</ property >
    
</ class >
</ hibernate-mapping >
spring和hibernate的另外一种整合方式:通过hibernate的配置文件来整合,这样要好的多:个人感觉
< bean  id ="sessionFactory"  class ="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >   
   
< property  name ="configLocation"  value ="classpath:hibernate.cfg.xml"   />
   
    
</ bean >   
配置文件和以前一样在,src目录下,其实最后也到web-inf/class下面去了。这样hibernate的配置文件就不用写到spring的配置文件里了。挺好。


天苍苍,野茫茫,风吹草底见牛羊

你可能感兴趣的:(struts2.1.8 +spring +hibernate整合及DWR异步提交)