准備工作:
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框架就完成了。