zoukankan      html  css  js  c++  java
  • 简单的搭建一个SSH框架

    准备工作:
    1.新建一个动态web项目(不要xml文件,使用全注解)
    2.往lib加东西(注意别重复)
       Strust2最小包+3个包(14个)、Hibernate的包、Spring的包、还有ojdbc6.jar
    3.resource 资源文件夹

      jdbc.properties、log4j.propertiesa、struts.xml

    第一步:让Struts2和Spring相结合

     1.需要一个全注解的配置类 WebInitialize.java  用来代替web.xml

    package com.zhaoming.config;
    
    import javax.servlet.FilterRegistration.Dynamic;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;
    import org.springframework.orm.hibernate4.support.OpenSessionInViewFilter;
    import org.springframework.web.WebApplicationInitializer;
    import org.springframework.web.context.ContextLoaderListener;
    import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
    
    public class WebInitializer implements WebApplicationInitializer {
    
        public void onStartup(ServletContext servletContext) throws ServletException {
            servletContext.addFilter("hibernateFilter", OpenSessionInViewFilter.class).addMappingForUrlPatterns(null, false, "/*");  
            AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext();  
            root.register(DataSourceConfig.class);
            //servletContext.setInitParameter("contextConfigLocation", "classpath:applicationContext.xml");
            servletContext.addListener(new ContextLoaderListener(root));
            Dynamic filter=servletContext.addFilter("struts2", new StrutsPrepareAndExecuteFilter());
            filter.addMappingForUrlPatterns(null,false,"/*");
        }  
    }

      2.新建index.jsp,一个单独的转向到com.zhaoming.action  ——>InitAction,成功返回login.jsp,测试成功。

    第二步:把 hibernate和Spring结合在一起
      创建一个与hibernate相关的DataSourceConfig配置类,主要工作:
        (1)连接数据库
        (2)获取sessionFactory
        (3)事务控制

    package com.zhaoming.config;
    
    import java.util.Properties;
    import javax.annotation.Resource;
    import org.hibernate.SessionFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.core.env.Environment;
    import org.springframework.orm.hibernate4.HibernateTransactionManager;
    import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    import com.alibaba.druid.pool.DruidDataSource;
    
    
    @Configuration
    @ComponentScan("com.zhaoming")
    @EnableTransactionManagement        //开启事务控制
    @PropertySource("classpath:jdbc.properties")
    public class DataSourceConfig {
    
        @Resource
        Environment env;
        @Resource
        DruidDataSource dataSource;
        @Resource
        SessionFactory sessionFactory;
        
        @Bean(name="dataSource")
        public DruidDataSource getDruidDataSource(){
            DruidDataSource dds = new DruidDataSource();
            dds.setUrl(env.getProperty("jdbc.url"));
            dds.setUsername(env.getProperty("jdbc.username"));
            dds.setPassword(env.getProperty("jdbc.password"));
            dds.setDriverClassName(env.getProperty("jdbc.class_name"));
            return dds;
        }
        
        @Bean(name="sessionFactory")
        public LocalSessionFactoryBean getLocalSessionFactoryBean(){
            LocalSessionFactoryBean lsfb = new LocalSessionFactoryBean();
            lsfb.setDataSource(dataSource);
            lsfb.setPackagesToScan("com.zhaoming");
            Properties prop = new Properties();
            prop.setProperty("hibernate.dialect", "org.hibernate.dialect.Oracle9Dialect");
            prop.setProperty("hibernate.current_session_context_class", "org.springframework.orm.hibernate4.SpringSessionContext");
            prop.setProperty("show_sql","true");
            lsfb.setHibernateProperties(prop);
            return lsfb;        
        }
        
        @Bean(name="transactionManager")
        public HibernateTransactionManager getHibernateTransactionManager(){
            HibernateTransactionManager htm = new HibernateTransactionManager();
            htm.setSessionFactory(sessionFactory);
            return htm;
            
        }
        
    }

    测试是否能获取到session

    第三步:根据自己的需要去写Dao、Service,贯穿整个项目。  

        1.通过MyEclipse建一个User实体类
        2.UserDaoIface
        3.UserDaoImp    ——  测试
        4.ServiceIface
        5.ServiceImp    ——  测试
        6.jsp
        7.相对应的Action  ——  测试

    至此,一个简易的SSH框架就完成了。

  • 相关阅读:
    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
    11
    实战 迁移学习 VGG19、ResNet50、InceptionV3 实践 猫狗大战 问题
    tx2系统备份与恢复
    如何在Ubuntu 18.04上安装和卸载TeamViewer
    bzoj 3732 Network (kruskal重构树)
    bzoj2152 聪聪可可 (树形dp)
    牛客 216D 消消乐 (二分图最小点覆盖)
    牛客 197E 01串
    Wannafly挑战赛23
  • 原文地址:https://www.cnblogs.com/zmlion1995/p/5808090.html
Copyright © 2011-2022 走看看