您当前的位置: 首页 >  ssh

xiangzhihong8

暂无认证

  • 5浏览

    0关注

    1324博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

ssh搭建开发环境

xiangzhihong8 发布时间:2014-03-26 09:11:14 ,浏览量:5

公司一直不是ssh零配置的框架,每次写action都要在applicationcontext和struts里面配置,好麻烦,最近有空,写了一个ssh零配置的框架

这里写了一个小的项目,以用户权限管理为例

先做准备工作:

1.struts2去官网下载最新版struts开发包http://struts.apache.org/download.cgi#struts216

2.hibernate4去官网下载最新版hibernate4开发包http://sourceforge.net/projects/hibernate/files/hibernate4/

3.spring3去官网下载最新版spring3开发包http://www.springsource.org/download/community

一、先建立一个空的web的项目sshFrame,加载必须的包

1.添加struts2必备的包。我下载的是最近的struts2.3.8

asm-3.3.jar  --ASM字节码库 ,使用“cglib”则必要

aopalliance-1.0.jar  --这个包为AOP提供了最普通和通用的接口

commons-fileupload-1.2.2.jar   --Struts2上传下载的jar

commons-io-2.0.1.jar  --Struts2上传下载的jar

commons-logging-1.1.1.jar   --Jakarta的通用日志记录包

freemarker-2.3.19.jar

ognl-3.0.6.jar    --支持ognl表达式

struts2-core-2.3.8.jar  --struts2的核心包

struts2-spring-plugin-2.3.8.jar     --struts2与spring整合所需

struts2-convention-plugin-2.3.8.jar  --struts2零配置注释用

xwork-core-2.3.8.jar 

可以不加 struts2-config-browser-plugin-2.3.8.jar为struts协助开发需要的包:可以输入http://127.0.0.1:8686/config-browser/actionNames.action查看系统所有已经存在的action,配置不正确就可以在这里看出来;

2.添加Hibernate 所需要的包。hibernate-4.1.9.Final

把下载下来的hibernate\lib\required下的包全部拷贝进去,分别是

antlr-2.7.7.jar  --语言转换工具,hibernate用他将hql语句转换为sql语句

dom4j-1.6.1.jar  --解析xml文档的工具

hibernate-commons-annotations-4.0.1.Final.jar

hibernate-core-4.1.9.Final.jar  --核心包

hibernate-jpa-2.0-api-1.0.1.Final.jar

javassist-3.17.1-GA.jar

jboss-logging-3.1.0.GA.jar

jboss-transaction-api_1.1_spec-1.0.0.Final.jar

还有加入hibernate\lib\optional\c3p0\c3p0-0.9.1.jar

hibernate-ehcache-4.1.9.Final.jar

ehcache-core-2.4.3.jar

slf4j-api-1.6.4.jar

slf4j-log4j12-1.6.4.jar

3添加spring3 所需要的包 spring-framework-3.2.0.RELEASE

spring-aop-3.2.0.RELEASE.jar

spring-aspects-3.2.0.RELEASE.jar

spring-beans-3.2.0.RELEASE.jar

spring-context-3.2.0.RELEASE.jar

spring-core-3.2.0.RELEASE.jar

spring-expression-3.2.0.RELEASE.jar

spring-instrument-3.2.0.RELEASE.jar

spring-jdbc-3.2.0.RELEASE.jar

spring-jms-3.2.0.RELEASE.jar

spring-orm-3.2.0.RELEASE.jar

spring-oxm-3.2.0.RELEASE.jar

spring-test-3.2.0.RELEASE.jar --测试时用

spring-tx-3.2.0.RELEASE.jar  --事务处理所用

spring-web-3.2.0.RELEASE.jar

aspectjweaver-1.5.3.jar  --spring所依赖的包

 

其他

asm-commons-3.3.jar

Commons—pool.jar ,commons-dbcp.jar  ----------DBCP数据库连接池,Apache的jakarta组织开发 的,tomcat连接池也是dbcp(可选)

cglib.jar----------------------------高效的代码生成工具, Hibernate用它在运行时扩展 Java类和实现 Java 接

jta.jar  --标准的JTA API(JTA即java事物API,JTA事务比JDBC事务更强大。一个JTA事务可以有多个参与者,而一个JDBC事务则被限定在一个单一的数据库连接),我暂时还没加,先备着

mysql-connector-java-5.1.18-bin.jar

log4j-1.2.16.jar

二、添加配置文件

在struts包下struts\src\apps\blank\src\main\resources提供了空白的struts.xml文件,把它复制到项目的src下

web.xml中

[html] view plain copy
  1.   
  2.     
  3.     org.springframework.web.context.ContextLoaderListener  
  4.     
  5.     
  6.     Spring上下文  
  7.     contextConfigLocation  
  8.     classpath:applicationContext*.xml  
  9.     
  10.   
  11.   
  12.     
  13.     hibernate Session 过滤器  
  14.     openSessionInViewFilter  
  15.     org.springframework.orm.hibernate4.support.OpenSessionInViewFilter  
  16.     
  17.     
  18.     openSessionInViewFilter  
  19.     /*  
  20.     
  21.      
  22.    
  23.     struts2  
  24.     org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  25.     
  26.     
  27.     struts2  
  28.     /*  
  29.     
  30.   
  31.    

struts.xml配置

[html] view plain copy
  1.   
  2.   
  3.   
  4.    
  5.    
  6.    
  7.    
  8.    
  9.     
  10.      
  11.      
  12.      
  13.      
  14.      
  15.      
  16.       
  17.       
  18.          
  19.      .*\\u0023.*     
  20.       
  21.       
  22.      
  23.     
  24.     
  25.     
  26.     
  27.    /index.jsp  
  28.    /error.jsp  
  29.     
  30.    
  31.   
  32.   

 applicationcontext.xml配置:

[html] view plain copy
  1.   
  2.   
  3.   
  4.       
  5.           
  6.           
  7.           
  8.           
  9.       
  10.       
  11.           
  12.           
  13.               
  14.                 org.hibernate.dialect.MySQLDialect  
  15.                 thread  
  16.                 org.hibernate.cache.EhCacheRegionFactory  
  17.                 true  
  18.                 true  
  19.                 update  
  20.               
  21.           
  22.           
  23.               
  24.                 com.sshFrame.zero.pojo  
  25.                 com.sshFrame.test.pojo  
  26.                   
  27.           
  28.       
  29.       
  30.       
  31.       
  32.           
  33.       
  34.       
  35.       
  36.       
  37.           
  38.               
  39.               
  40.               
  41.               
  42.               
  43.               
  44.               
  45.               
  46.               
  47.               
  48.   
  49.               
  50.               
  51.               
  52.   
  53.               
  54.               
  55.   
  56.               
  57.           
  58.       
  59.       
  60.           
  61.           
  62.           
  63.       
  64.       
  65.       
  66.       
  67.   

三、写框架基类

改写基本的框架类了

Basedao

[html] view plain copy
  1. package com.sshFrame.zero.dao;  
  2.   
  3. import java.io.Serializable;  
  4. import java.lang.reflect.Field;  
  5. import java.lang.reflect.ParameterizedType;  
  6. import java.lang.reflect.Type;  
  7. import java.util.List;  
  8.   
  9. import javax.persistence.Id;  
  10.   
  11. import org.hibernate.Criteria;  
  12. import org.hibernate.HibernateException;  
  13. import org.hibernate.Query;  
  14. import org.hibernate.Session;  
  15. import org.hibernate.SessionFactory;  
  16. import org.hibernate.criterion.Example;  
  17. import org.springframework.beans.factory.annotation.Autowired;  
  18.   
  19. /**  
  20.  * 基于hibernate的BaseDao  
  21.  * Spring3对Hibernate4已经没有了HibernateDaoSupport和HibernateTemplate的支持,使用了原生态的API  
  22.  * @author 雪精灵  
  23.  *  
  24.  * @param   
  25.  */  
  26. public class BaseDao {  
  27.     @Autowired  
  28.     private SessionFactory sessionFactory;  
  29.     //当前泛型类  
  30.     @SuppressWarnings("rawtypes")  
  31.     private Class entityClass;  
  32.     //当前主键名称  
  33.     private String pkname;  
  34.     private final String HQL_LIST_ALL;  
  35.     private final String HQL_COUNT_ALL;  
  36.     @SuppressWarnings("rawtypes")  
  37.     public Class getEntityClass() {  
  38.         return entityClass;  
  39.     }  
  40.     @SuppressWarnings("rawtypes")  
  41.     public void setEntityClass(Class entityClass) {  
  42.         this.entityClass = entityClass;  
  43.     }  
  44.       
  45.     @SuppressWarnings("rawtypes")  
  46.     public BaseDao() {  
  47.         //获取当前泛型类  
  48.         Type type = this.getClass().getGenericSuperclass();  
  49.         if (type.toString().indexOf("BaseDao") != -1) {  
  50.             ParameterizedType type1 = (ParameterizedType) type;  
  51.             Type[] types = type1.getActualTypeArguments();  
  52.             setEntityClass((Class) types[0]);  
  53.         }else{  
  54.             type = ((Class)type).getGenericSuperclass();  
  55.             ParameterizedType type1 = (ParameterizedType) type;  
  56.             Type[] types = type1.getActualTypeArguments();  
  57.             setEntityClass((Class) types[0]);  
  58.         }  
  59.         getPkname();  
  60.         HQL_LIST_ALL="from "+this.entityClass.getSimpleName()+" order by "+pkname+" desc";  
  61.         HQL_COUNT_ALL="select count(*) from "+this.entityClass.getSimpleName();  
  62.     }  
  63.     /**  
  64.      * 获取主键名称  
  65.      * @return  
  66.      */  
  67.     public String getPkname() {  
  68.         Field[] fields = this.entityClass.getDeclaredFields();//反射类字段  
  69.         for (Field field : fields) {  
  70.             field.isAnnotationPresent(Id.class);  
  71.             this.pkname=field.getName();  
  72.             break;  
  73.         }  
  74.         return pkname;  
  75.     }  
  76.     /**  
  77.      * 保存实例  
  78.      *   
  79.      * @param t  
  80.      * @throws HibernateException  
  81.      */  
  82.     public void save(T t) throws HibernateException{  
  83.         Session session=null;  
  84.         try {  
  85.             session=sessionFactory.openSession();  
  86.             session.beginTransaction();  
  87.             session.save(t);  
  88.             session.getTransaction().commit();  
  89.         } catch (HibernateException e) {  
  90.             e.printStackTrace();  
  91.             throw new HibernateException(e);  
  92.         }finally{  
  93.             session.close();  
  94.         }  
  95.     }  
  96.     /**  
  97.      * 修改实例  
  98.      *   
  99.      * @param t  
  100.      * @throws HibernateException  
  101.      */  
  102.     public void update(T t) throws HibernateException{  
  103.         Session session=null;  
  104.         try {  
  105.             session=sessionFactory.openSession();  
  106.             session.beginTransaction();  
  107.             session.update(t);  
  108.             session.getTransaction().commit();  
  109.         } catch (HibernateException e) {  
  110.             e.printStackTrace();  
  111.             throw new HibernateException(e);  
  112.         }finally{  
  113.             session.close();  
  114.         }  
  115.     }  
  116.       
  117.     /**  
  118.      * 删除实例  
  119.      *   
  120.      * @param t  
  121.      * @throws HibernateException  
  122.      */  
  123.     public void delete(T t) throws HibernateException{  
  124.         Session session=null;  
  125.         try {  
  126.             session=sessionFactory.openSession();  
  127.             session.beginTransaction();  
  128.             session.delete(t);  
  129.             session.getTransaction().commit();  
  130.         } catch (HibernateException e) {  
  131.             e.printStackTrace();  
  132.             throw new HibernateException(e);  
  133.         }finally{  
  134.             session.close();  
  135.         }  
  136.     }  
  137.     /**  
  138.      * 获取实例  
  139.      *   
  140.      * @param id  
  141.      * @throws HibernateException  
  142.      */  
  143.     @SuppressWarnings("unchecked")  
  144.     public T get(Serializable id) throws Exception{  
  145.         Session session=null;  
  146.         T t=null;  
  147.         try {  
  148.             session=sessionFactory.openSession();  
  149.             session.beginTransaction();  
  150.             t=(T) session.get(getEntityClass(), id);  
  151.             session.getTransaction().commit();  
  152.         } catch (HibernateException e) {  
  153.             e.printStackTrace();  
  154.             throw new HibernateException(e);  
  155.         }finally{  
  156.             session.close();  
  157.         }  
  158.         return t;  
  159.     }  
  160.     /**  
  161.      * 查询全部  
  162.      *   
  163.      * @throws HibernateException  
  164.      */  
  165.     @SuppressWarnings("unchecked")  
  166.     public List findAll() throws Exception {  
  167.         List list=null;  
  168.         Session session=null;  
  169.         try {  
  170.             session = sessionFactory.openSession();  
  171.             session.beginTransaction();  
  172.             Query query = session.createQuery(HQL_LIST_ALL);  
  173.             list = query.list();  
  174.             session.getTransaction().commit();  
  175.         } catch (HibernateException e) {  
  176.             e.printStackTrace();  
  177.         }finally{  
  178.             session.close();  
  179.         }  
  180.         return list;  
  181.     }  
  182.     /**  
  183.      * 查询总数  
  184.      *   
  185.      * @throws HibernateException  
  186.      */  
  187.     public Integer findAllCount() throws Exception {  
  188.         Session session=null;  
  189.         Integer count=0;  
  190.         try {  
  191.             session = sessionFactory.openSession();  
  192.             session.beginTransaction();  
  193.             Query query = session.createQuery(HQL_COUNT_ALL);  
  194.             List
关注
打赏
1482932726
查看更多评论
立即登录/注册

微信扫码登录

0.0932s