Struts 整合 SpringMVC 過程:這篇文章是我在整合過程中所做的記錄和筆記
web.xml :篩選器機制過濾原機制是攔截了所有 url ,即
新機制為了將 structs2 的 url 與 SpringMVC 的 url 區分開來,則修改了攔截屬性
web.xml struts 整合 SpringMVCstruts2 /* REQUEST FORWARD struts2 *.action REQUEST FORWARD struts2 *.jsp REQUEST FORWARD
contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContext contextConfigLocation spring.config.AppConfig org.springframework.web.context.ContextLoaderListener dispatcher org.springframework.web.servlet.DispatcherServlet contextClass org.springframework.web.context.support.AnnotationConfigWebApplicationContext contextConfigLocation spring.config.MvcConfig dispatcher /km/*
基于web.xml配置文件的配置屬性,需要配置兩個Config類:【兩個配置的區別】
AppConfig.java
@Configuration @Import({KmAppConfig.class}) public class AppConfig { }
MvcConfig.java
@Configuration @Import({KmMvcConfig.class}) public class MvcConfig { }
基于Config類,配置具體的應用Config
KmAppConfig.java
@Configuration @ComponentScan(basePackages = "com.teemlink.km.") //掃描包體 public class KmAppConfig implements TransactionManagementConfigurer,ApplicationContextAware { private static ApplicationContext applicationContext; @Autowired private DataSource dataSource; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { KmAppConfig.applicationContext = applicationContext; } public static ApplicationContext getApplicationContext() { return applicationContext; } @Bean public DataSource dataSource() { //如何讀取配置資源的數據? String url = "jdbc:jtds:sqlserver://192.168.80.47:1433/nj_km_dev"; String username = "sa"; String password = "teemlink"; DriverManagerDataSource ds = new DriverManagerDataSource(url, username, password); ds.setDriverClassName("net.sourceforge.jtds.jdbc.Driver"); return ds; } @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource){ return new JdbcTemplate(dataSource); } @Override public PlatformTransactionManager annotationDrivenTransactionManager() { return new DataSourceTransactionManager(dataSource); } }
KmMvcConfig.java
@Configuration @EnableWebMvc @ComponentScan(basePackages = "com.teemlink.km.**.controller") public class KmMvcConfig extends WebMvcConfigurerAdapter { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { configurer.enable(); } }基于SpringMVC 的 Controller - Service - Dao 框架
AbstractBaseController
/** * 抽象的RESTful控制器基類 * @author Happy * */ @RestController public abstract class AbstractBaseController { @Autowired protected HttpServletRequest request; @Autowired protected HttpSession session; protected Resource success(String errmsg, Object data) { return new Resource(0, errmsg, data, null); } protected Resource error(int errcode, String errmsg, Collection
IService
/** * * @param*/ public interface IService { /** * 創建實例 * @param entity * @return * @throws Exception */ public IEntity create(IEntity entity) throws Exception; /** * 更新實例 * @param entity * @return * @throws Exception */ public IEntity update(IEntity entity) throws Exception; /** * 根據主鍵獲取實例 * @param pk * @return * @throws Exception */ public IEntity find(String pk) throws Exception; /** * 刪除實例 * @param pk * @throws Exception */ public void delete(String pk) throws Exception; /** * 批量刪除實例 * @param pk * @throws Exception */ public void delete(String[] pk) throws Exception; }
AbstractBaseService
/** * 抽象的業務基類 * */ public abstract class AbstractBaseService { /** * @return the dao */ public abstract IDAO getDao(); @Transactional public IEntity create(IEntity entity) throws Exception { if(StringUtils.isBlank(entity.getId())){ entity.setId(UUID.randomUUID().toString()); } return getDao().create(entity); } @Transactional public IEntity update(IEntity entity) throws Exception { return getDao().update(entity); } public IEntity find(String pk) throws Exception { return getDao().find(pk); } @Transactional public void delete(String pk) throws Exception { getDao().remove(pk); } @Transactional public void delete(String[] pks) throws Exception { for (int i = 0; i < pks.length; i++) { getDao().remove(pks[i]); } } }
IDAO
/** * */ public interface IDAO { public IEntity create(IEntity entity) throws Exception; public void remove(String pk) throws Exception; public IEntity update(IEntity entity) throws Exception; public IEntity find(String id) throws Exception; }
AbstractJdbcBaseDAO
/** * 基于JDBC方式的DAO抽象實現,依賴Spring的JdbcTemplate和事務管理支持 * */ public abstract class AbstractJdbcBaseDAO { @Autowired public JdbcTemplate jdbcTemplate; protected String tableName; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } /** * 構建分頁sql * @param sql * @param page * @param lines * @param orderbyFile * @param orderbyMode * @return * @throws SQLException */ protected abstract String buildLimitString(String sql, int page, int lines, String orderbyFile, String orderbyMode) throws SQLException ; /** * 獲取數據庫Schema * @return */ // protected abstract String getSchema(); /** * 獲取表名 * @return */ protected String getTableName(){ return this.tableName; } /** * 獲取完整表名 * @return */ public String getFullTableName() { return getTableName().toUpperCase(); } }測試框架
基本測試框架
/** * 單元測試基類,基于Spring提供bean組件的自動掃描裝配和事務支持 * */ @RunWith(SpringRunner.class) @ContextConfiguration(classes = KmAppConfig.class) @Transactional public class BaseJunit4SpringRunnerTest { }
具體實現:(以Disk為例)
public class DiskServiceTest extends BaseJunit4SpringRunnerTest { @Autowired DiskService service; @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testFind() throws Exception{ Disk disk = (Disk) service.find("1"); Assert.assertNotNull(disk); } @Test @Commit public void testCreate() throws Exception{ Disk disk = new Disk(); disk.setName("abc"); disk.setType(1); disk.setOrderNo(0); disk.setOwnerId("123123"); service.create(disk); Assert.assertNotNull(disk.getId()); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67437.html
摘要:前言由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...
摘要:當容器啟動或終止應用時,會觸發事件,該事件由來處理。監聽器的作用就是啟動容器時,自動裝配的配置信息。初始化在架構中,負責請求分發,起到控制器的作用。 ??公司項目使用 struts2 作為控制層框架,為了實現前后端分離,計劃將 struts2 切換為 SpringMVC ,因此,這段時間都在學習新的框架,《Spring實戰》是一本好書,里面對 Spring 的原理實現以及應用都說得很透...
摘要:的入口是,而是這里要指出,和是不同的。以前認為是的一種特殊,這就導致了二者的機制不同,這里就牽涉到和的區別了。開發效率和性能高于。的實現機制有以自己的機制,用的是獨立的方式。 1、Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC...
摘要:也就是說映射器就是用于處理什么樣的請求提交給處理。這和是一樣的提交參數的用戶名編號提交配置處理請求注冊映射器包框架接收參數設置無參構造器,里邊調用方法,傳入要封裝的對象這里的對象就表示已經封裝好的了對象了。 什么是SpringMVC? SpringMVC是Spring家族的一員,Spring是將現在開發中流行的組件進行組合而成的一個框架!它用在基于MVC的表現層開發,類似于struts...
閱讀 1629·2019-08-30 15:54
閱讀 2374·2019-08-30 15:52
閱讀 2048·2019-08-29 15:33
閱讀 3042·2019-08-28 17:56
閱讀 3237·2019-08-26 13:54
閱讀 1675·2019-08-26 12:16
閱讀 2449·2019-08-26 11:51
閱讀 1645·2019-08-26 10:26