国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Struts 整合 SpringMVC

Scliang / 1174人閱讀

Struts 整合 SpringMVC 過程:這篇文章是我在整合過程中所做的記錄和筆記

web.xml :篩選器機制過濾

原機制是攔截了所有 url ,即 /*

新機制為了將 structs2 的 url 與 SpringMVC 的 url 區分開來,則修改了攔截屬性


   
        struts2
        /*
        REQUEST  
        FORWARD 
    
    
    

   
        struts2
        *.action
        REQUEST 
        FORWARD 
    
    
        struts2
        *.jsp
        REQUEST  
        FORWARD 
    
web.xml struts 整合 SpringMVC

     
    
        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 errors) {
        return new Resource(errcode, errmsg, null, errors);
    }
    private Resource resourceValue;
    public Resource getResourceValue() {
        return resourceValue;
    }
    public void setResourceValue(Resource resourceValue) {
        this.resourceValue = resourceValue;
    }
    
    /**
     * 資源未找到的異常,返回404的狀態,且返回錯誤信息。
     * @param e
     * @return
     */
    @ExceptionHandler(RuntimeException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public Resource resourceNotFound(RuntimeException e) {
        return error(404, "Not Found", null);
    }
    /**
     * 運行時異常,服務器錯誤,返回500狀態,返回服務器錯誤信息。
     * @param e
     * @return
     */
    @ExceptionHandler(RuntimeException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Resource error(RuntimeException e) {
        return error(500, "Server Error", null);
    }
    
    /**
     * Restful 接口返回的資源對象
     * 
     */
    @JsonInclude(Include.NON_EMPTY)
    public class Resource implements Serializable {
        private static final long serialVersionUID = 2315158311944949185L;
        private int errcode;
        private String errmsg;
        private Object data;
        private Collection errors;
        public Resource() {}
        
        public Resource(int errcode, String errmsg, Object data, Collection errors) {
            this.errcode = errcode;
            this.errmsg = errmsg;
            this.data = data;
            this.errors = errors;
        }
        public int getErrcode() {
            return errcode;
        }
        public void setErrcode(int errcode) {
            this.errcode = errcode;
        }
        public String getErrmsg() {
            return errmsg;
        }
        public void setErrmsg(String errmsg) {
            this.errmsg = errmsg;
        }
        public Object getData() {
            return data;
        }
        public void setData(Object data) {
            this.data = data;
        }
        public Collection getErrors() {
            return errors;
        }
        public void setErrors(Collection errors) {
            this.errors = errors;
        }
    }
}

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 Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數據庫連接池...

    KevinYan 評論0 收藏0
  • SpringMVCSpringMVC啟動初始化過程

    摘要:當容器啟動或終止應用時,會觸發事件,該事件由來處理。監聽器的作用就是啟動容器時,自動裝配的配置信息。初始化在架構中,負責請求分發,起到控制器的作用。 ??公司項目使用 struts2 作為控制層框架,為了實現前后端分離,計劃將 struts2 切換為 SpringMVC ,因此,這段時間都在學習新的框架,《Spring實戰》是一本好書,里面對 Spring 的原理實現以及應用都說得很透...

    Bowman_han 評論0 收藏0
  • 面試題:SpringMVCStruts2的區別

    摘要:的入口是,而是這里要指出,和是不同的。以前認為是的一種特殊,這就導致了二者的機制不同,這里就牽涉到和的區別了。開發效率和性能高于。的實現機制有以自己的機制,用的是獨立的方式。 1、Struts2是類級別的攔截, 一個類對應一個request上下文,SpringMVC是方法級別的攔截,一個方法對應一個request上下文,而方法同時又跟一個url對應,所以說從架構本身上SpringMVC...

    isaced 評論0 收藏0
  • SpringMVC入門就這么簡單

    摘要:也就是說映射器就是用于處理什么樣的請求提交給處理。這和是一樣的提交參數的用戶名編號提交配置處理請求注冊映射器包框架接收參數設置無參構造器,里邊調用方法,傳入要封裝的對象這里的對象就表示已經封裝好的了對象了。 什么是SpringMVC? SpringMVC是Spring家族的一員,Spring是將現在開發中流行的組件進行組合而成的一個框架!它用在基于MVC的表現層開發,類似于struts...

    SKYZACK 評論0 收藏0
  • Java后端

    摘要:,面向切面編程,中最主要的是用于事務方面的使用。目標達成后還會有去構建微服務,希望大家多多支持。原文地址手把手教程優雅的應用四手把手實現后端搭建第四期 SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Spring 兩大核心之 AOP 學習 | 掘金技術征文 原本地址:SpringMVC 干貨系列:從零搭建 SpringMVC+mybatis(四):Sp...

    joyvw 評論0 收藏0

發表評論

0條評論

Scliang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<