`

【转】struts2+spring3.0+hibernate注解方式

 
阅读更多

最近用这三个东西开发了一个后台管理的程序,现在写出来希望能够讨论谈论,因为我刚开始弄有很多东西都还不知道,在这里写出来望大家发现到问题后能够给我留言,以便完善,呵呵~

第一步:导入工程需要的包,具体需要哪些包,如果有需要的话我可以提供,当然最好的就是去官网下载了,呵呵~

第二步:配置web.xml文件。我的web.xml文件如下:

[java] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  3.     <!-- 默认i18n资源文件 -->  
  4.     <context-param>  
  5.         <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>  
  6.         <param-value>i18n/messages</param-value>  
  7.     </context-param>  
  8.       
  9.     <!--  
  10.         Location of the Log4J config file, for initialization and refresh checks.  
  11.         Applied by Log4jConfigListener.  
  12.     -->  
  13.     <context-param>  
  14.         <param-name>log4jConfigLocation</param-name>  
  15.         <param-value>/WEB-INF/classes/log4j.properties</param-value>  
  16.     </context-param>  
  17.       
  18.     <filter>  
  19.         <filter-name>struts2</filter-name>  
  20.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  21.         <init-param>  
  22.             <param-name>actionPackages</param-name>  
  23.             <param-value>com.cssweb.tradeadmin.action.trade</param-value>  
  24.         </init-param>  
  25.     </filter>  
  26.   
  27.     <filter-mapping>  
  28.         <filter-name>struts2</filter-name>  
  29.         <url-pattern>/*</url-pattern>  
  30.     </filter-mapping>  
  31.       
  32.     <!-- 著名 Character Encoding filter -->  
  33.     <filter>  
  34.         <filter-name>encodingFilter</filter-name>  
  35.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  36.         <init-param>  
  37.             <param-name>encoding</param-name>  
  38.             <param-value>UTF-8</param-value>  
  39.         </init-param>  
  40.     </filter>  
  41.   
  42.     <listener>  
  43.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  44.     </listener>  
  45.     <context-param>  
  46.         <param-name>contextConfigLocation</param-name>  
  47.         <param-value>/WEB-INF/applicationContext.xml</param-value>  
  48.     </context-param>  
  49.   
  50.     <!-- Spring 刷新Introspector防止内存泄露 -->  
  51.     <listener>  
  52.         <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
  53.     </listener>  
  54.       
  55.     <session-config>  
  56.         <session-timeout>30</session-timeout>  
  57.     </session-config>  
  58.       
  59.     <!-- Error Page定义 -->  
  60.     <error-page>  
  61.         <error-code>500</error-code>  
  62.         <location>/commons/error.jsp</location>  
  63.     </error-page>  
  64.     <error-page>  
  65.         <error-code>404</error-code>  
  66.         <location>/commons/404.jsp</location>  
  67.     </error-page>  
  68.     <error-page>  
  69.         <error-code>403</error-code>  
  70.         <location>/commons/403.jsp</location>  
  71.     </error-page>  
  72.       
  73.     <welcome-file-list>  
  74.         <!-- Redirects to "welcome.htm" for dispatcher handling -->  
  75.         <welcome-file>index.jsp</welcome-file>  
  76.     </welcome-file-list>  
  77.    
  78. </web-app>  

 

第三步:配置strust.xml文件(由于我用的是注解驱动方式,所以只有这一个文件)

[java] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.dtd">  
  5. <struts>  
  6.         <constant name="struts.custom.i18n.resources" value="globalMessages" />  
  7.         <constant name="struts.convention.package.locators" value="action" />   
  8.         <constant name="struts.i18n.encoding" value="UTF-8" />  
  9.         <!-- when you used to real please set false -->  
  10.         <constant name="struts.devMode" value="true" />  
  11.         <!-- 将struts2委托Spring管理 -->  
  12.         <constant name="struts.objectFactory" value="spring" />   
  13.           
  14.         <package name="mydefault" extends="struts-default">  
  15.               
  16.             <global-results>  
  17.                 <!-- 下面定义的结果对所有的Action都有效 -->  
  18.                 <result name="exception">/commons/error.jsp</result>  
  19.                 <result name="login">/login/login.jsp</result>  
  20.             </global-results>  
  21.   
  22.             <global-exception-mappings>  
  23.                 <!-- 指Action抛出Exception异常时,转入名为exception的结果。 -->  
  24.                 <exception-mapping exception="java.lang.Exception" result="exception"/>  
  25.             </global-exception-mappings>  
  26.         </package>   
  27.            
  28. </struts>  

 

第四步:配置spring的xml文件包含hibernate的引入

[java] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.         xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"  
  4.         xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.         xmlns:aop="http://www.springframework.org/schema/aop"  
  6.         xsi:schemaLocation="  
  7.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd  
  8.             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd  
  9.             http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd  
  10.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd  
  11.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">  
  12.       
  13.     <context:component-scan base-package="com.cssweb.tradeadmin.action"/>  
  14.       
  15.     <bean id="propertyConfigurer"  
  16.           class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"  
  17.           p:location="/WEB-INF/jdbc.properties" />  
  18.       
  19.     <bean id="dataSource"  
  20.           class="org.springframework.jdbc.datasource.DriverManagerDataSource"  
  21.           p:driverClassName="${jdbc.driverClassName}"  
  22.           p:url="${jdbc.url}"  
  23.           p:username="${jdbc.username}"  
  24.           p:password="${jdbc.password}" />  
  25.       
  26.     <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->  
  27.     <!-- Hibernate SessionFactory -->  
  28.     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"  
  29.                 p:dataSource-ref="dataSource">  
  30.         <property name="hibernateProperties">  
  31.                 <props>  
  32.                         <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
  33.                         <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  34.                         <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop>  
  35.                 </props>  
  36.         </property>  
  37.         <property name="mappingResources">  
  38.                 <list>  
  39.                     <value>com/cssweb/tradeadmin/model/UserBasicInfo.hbm.xml</value>  
  40.                     <value>com/cssweb/tradeadmin/model/LogLoginToday.hbm.xml</value>  
  41.                     <value>com/cssweb/tradeadmin/model/CustHostInfo.hbm.xml</value>  
  42.             </list>  
  43.         </property>  
  44.         <property name="eventListeners">  
  45.                 <map>  
  46.                         <entry key="merge">  
  47.                                 <bean class="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"/>  
  48.                         </entry>  
  49.                 </map>  
  50.         </property>  
  51.     </bean>  
  52.   
  53.     <!-- Transaction manager for a single Hibernate SessionFactory (alternative to JTA) -->  
  54.     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"  
  55.                 p:sessionFactory-ref="sessionFactory"/>  
  56.   
  57.     <!-- Transaction manager that delegates to JTA (for a transactional JNDI DataSource) -->  
  58.     <!--  
  59.     <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>  
  60.     -->  
  61.   
  62.   
  63.     <!-- ========================= BUSINESS OBJECT DEFINITIONS ========================= -->  
  64.   
  65.     <!--  
  66.         Activates various annotations to be detected in bean classes:  
  67.         Spring's @Required and @Autowired, as well as JSR 250'@Resource.  
  68.     -->  
  69.     <context:annotation-config/>  
  70.   
  71.     <!--  
  72.         Instruct Spring to perform declarative transaction management  
  73.         automatically on annotated classes.  
  74.     -->  
  75.     <tx:annotation-driven/>  
  76.   
  77.     <!--  
  78.         Exporter that exposes the Hibernate statistics service via JMX. Autodetects the  
  79.         service MBean, using its bean name as JMX object name.  
  80.     -->  
  81.     <context:mbean-export/>  
  82.       
  83.       
  84.     <aop:aspectj-autoproxy/>  
  85.   
  86.     <!-- PetClinic's central data access object: Hibernate implementation -->  
  87.     <bean id="clinic" class="com.cssweb.tradeadmin.dao.hibernate.HibernateClinic"/>  
  88. </beans>  

 

第五步:在action包里面建action类:

[java] view plaincopy
  1. /** 
  2.  * Copyright 2010 CssWeb Microsystems, Inc. All rights reserved. 
  3.  * CssWeb PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 
  4.  * 
  5.  * @(#)LoginAction.java 1:58:01 PM Apr 15, 2010 
  6.  */  
  7. package com.cssweb.tradeadmin.action;  
  8.   
  9. import java.util.List;  
  10. import java.util.Map;  
  11.   
  12. import javax.servlet.http.HttpServletRequest;  
  13.   
  14. import org.apache.commons.logging.Log;  
  15. import org.apache.commons.logging.LogFactory;  
  16. import org.apache.struts2.ServletActionContext;  
  17. import org.apache.struts2.convention.annotation.Action;  
  18. import org.apache.struts2.convention.annotation.Namespace;  
  19. import org.apache.struts2.convention.annotation.ParentPackage;  
  20. import org.apache.struts2.convention.annotation.Result;  
  21. import org.springframework.beans.factory.annotation.Autowired;  
  22. import org.springframework.context.annotation.Scope;  
  23. import org.springframework.stereotype.Controller;  
  24.   
  25. import com.cssweb.common.exception.BussinessException;  
  26. import com.cssweb.common.util.MD5;  
  27. import com.cssweb.tradeadmin.dao.Clinic;  
  28. import com.cssweb.tradeadmin.model.UserBasicInfo;  
  29. import com.opensymphony.xwork2.ActionContext;  
  30. import com.opensymphony.xwork2.ActionSupport;  
  31.   
  32. /** 
  33.  * 交易系统后台登录 
  34.  * 
  35.  * @author hujun 
  36.  * @version 1.0 
  37.  * @see 
  38.  * @since 1.0 
  39.  */  
  40. @Controller  
  41. @ParentPackage("mydefault")   
  42. @Namespace("/user")  
  43. @Scope("prototype")  
  44. public class LoginAction extends ActionSupport {  
  45.     /** 
  46.      *  
  47.      */  
  48.     private static final long serialVersionUID = 7454734463309586123L;  
  49.   
  50.     private Log log = LogFactory.getLog(LoginAction.class);  
  51.       
  52.     private final Clinic clinic;  
  53.       
  54.     private String loginName;  
  55.     private String loginPwd;  
  56.     private String incode;  
  57.       
  58.     @Autowired  
  59.     public LoginAction(Clinic clinic) {  
  60.         this.clinic = clinic;  
  61.     }  
  62.       
  63.     @Action(value="login",   
  64.             results={@Result(name="success", location="/index.jsp", type="redirect"),  
  65.                      @Result(name="input", location="/login/login.jsp")})  
  66.     public String login() {  
  67.         System.out.println(">>>>>>>>>>>>>>>>>>>>" + loginName);  
  68.         System.out.println(">>>>>>>>>>>>>>>>>>>>" + loginPwd);  
  69.         System.out.println(">>>>>>>>>>>>>>>>>>>>" + incode);  
  70.         String msg = "";  
  71.         try {  
  72.             Map session = ActionContext.getContext().getSession();  
  73.             String vnum = (String)session.get("vnum");  
  74.             if(vnum!=null&&!vnum.toLowerCase().equals(incode.toLowerCase())) {  
  75.                 msg="验证码不正确!";  
  76.             }  
  77.             else {  
  78.                 MD5 md5 = new MD5();  
  79.                 UserBasicInfo user = new UserBasicInfo();  
  80.                 user.setUserName(loginName);  
  81.                 user.setPassword(md5.getMD5ofStr(loginPwd));  
  82.                 List<?> list = this.clinic.queryList(user, 01nullfalse);  
  83.                 if(list!=null&&list.size()>0) {  
  84.                     session.put("userName", loginName);  
  85.                     session.put("password", loginPwd);  
  86.                 }  
  87.                 else {  
  88.                     msg="用户和密码不正确!";  
  89.                 }  
  90.             }  
  91.             HttpServletRequest request = ServletActionContext.getRequest();  
  92.             request.setAttribute("msg", msg);  
  93.         } catch (BussinessException e) {  
  94.             log.error(e);  
  95.         }  
  96.         System.out.println(">>>>>>>>>>>>##########" + msg);  
  97.         return msg.equals("") ? SUCCESS : "input";  
  98.     }  
  99.   
  100.     public String getLoginName() {  
  101.         return loginName;  
  102.     }  
  103.   
  104.     public void setLoginName(String loginName) {  
  105.         this.loginName = loginName;  
  106.     }  
  107.   
  108.     public String getLoginPwd() {  
  109.         return loginPwd;  
  110.     }  
  111.   
  112.     public void setLoginPwd(String loginPwd) {  
  113.         this.loginPwd = loginPwd;  
  114.     }  
  115.   
  116.     public String getIncode() {  
  117.         return incode;  
  118.     }  
  119.   
  120.     public void setIncode(String incode) {  
  121.         this.incode = incode;  
  122.     }  
  123. }  

 

 

第六步:hibernate类,在这里action中的Clinic是接口,hibernate类集成这个接口

[java] view plaincopy
  1. @Autowired  
  2. private SessionFactory sessionFactory;  
  3.   
  4.    /** 
  5.     * 保存(新建或者更新) 
  6.     */  
  7.    public void merge(Object obj) throws BussinessException {  
  8.        try {  
  9.            Session session = sessionFactory.openSession();  
  10.            Transaction t=session.beginTransaction();  
  11.            session.merge(obj);  
  12.            t.commit();  
  13.        }catch(RuntimeException e){  
  14.         log.error(e);  
  15.         throw new BussinessException(e);  
  16.        }  
  17.    }  
  18.      
  19.    /** 
  20.     * 保存(新建或者更新) 
  21.     */  
  22.    public void save(Object obj) throws BussinessException {  
  23.        try {  
  24.            Session session = sessionFactory.openSession();  
  25.            Transaction t=session.beginTransaction();  
  26.            session.save(obj);  
  27.            t.commit();  
  28.        }catch(RuntimeException e){  
  29.         log.error(e);  
  30.         throw new BussinessException(e);  
  31.        }  
  32.    }  
  33.      
  34.    /** 
  35.     * 保存(新建或者更新) 
  36.     */  
  37.    public void update(Object obj) throws BussinessException {  
  38.        try {  
  39.            Session session = sessionFactory.openSession();  
  40.            Transaction t=session.beginTransaction();  
  41.            session.update(obj);  
  42.            t.commit();  
  43.        }catch(RuntimeException e){  
  44.         log.error(e);  
  45.         throw new BussinessException(e);  
  46.        }  
  47.    }  
  48.    /** 
  49.     * 保存(新建或者更新) 
  50.     */  
  51.    public void saveOrupdate(Object obj) throws BussinessException {  
  52.        try {  
  53.            Session session = sessionFactory.openSession();  
  54.            Transaction t=session.beginTransaction();  
  55.            session.saveOrUpdate(obj);  
  56.            t.commit();  
  57.        }catch(RuntimeException e){  
  58.         log.error(e);  
  59.         throw new BussinessException(e);  
  60.        }  
  61.    }  

 

转自:http://blog.csdn.net/xiaojunhu/article/details/5500365

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics