国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:調(diào)用業(yè)務(wù)對(duì)象、父子工廠拆分(applicationContext.xml、dispatcher.xml)

這篇具有很好參考價(jià)值的文章主要介紹了Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:調(diào)用業(yè)務(wù)對(duì)象、父子工廠拆分(applicationContext.xml、dispatcher.xml)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

學(xué)習(xí)視頻:孫哥說SpringMVC:結(jié)合Thymeleaf,重塑你的MVC世界!|前所未有的Web開發(fā)探索之旅

第四章、SpringMVC控制器開發(fā)詳解 二

4.1 核心要點(diǎn)

?? 1. 接收客戶端(Client)請求參數(shù)【講解完畢】 2. 調(diào)用業(yè)務(wù)對(duì)象【講解】 3. 頁面跳轉(zhuǎn)

4.2 SpringMVC控制器調(diào)用業(yè)務(wù)對(duì)象【SSM整合】

4.2.1 核心思路分析

Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:調(diào)用業(yè)務(wù)對(duì)象、父子工廠拆分(applicationContext.xml、dispatcher.xml)
Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:調(diào)用業(yè)務(wù)對(duì)象、父子工廠拆分(applicationContext.xml、dispatcher.xml)

4.2.2 編碼

  • dispatcher.xml

    <!--設(shè)置注解掃描的路徑-->
    <context:component-scan base-package="com.baizhi"/>
    
    <!--引入SpringMVC的核心功能-->
    <mvc:annotation-driven/>
    
    <!--整合跳轉(zhuǎn)路徑,解耦合-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <!--連接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/myschool?useSSL=false&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    <!-- 創(chuàng)建SqlSessionFactory SqlSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.baizhi.entity"/>
        <property name="mapperLocations">
            <list>
                <value>classpath:com.baizhi.mapper/*Mapper.xml</value>
            </list>
        </property>
    </bean>
    <!--創(chuàng)建DAO對(duì)象 MapperScannerConfigure-->
    <bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
        <property name="basePackage" value="com.baizhi.dao"/>
    </bean>
    
    <!-- 配置事務(wù)-->
    <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
    
  • DAO

    // **POJO**
    public class User implements Serializable {
        private Integer id;
        private String name;
        private String password;
    // **建表**
    create table t_user(
        id integer primary key auto_increment;
        name varchar(12),
        password varchar(12)
    );
    // **DAO**
    public interface UserDAO {
        void save(User user);
    }
    // **Mapper**
    <mapper namespace="com.baizhi.dao.UserDAO">
    
        <insert id="save">
            insert into admin(name,password) values(#{name},#{password})
        </insert>
    </mapper>
    
    
  • Service

    public interface UserService {
        void register(User user);
    }
    
    Service
    @Transactional
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserDAO userDAO;
    
        @Override
        public void register(User user) {
            userDAO.save(user);
        }
    }
    
  • Controller

    @Controller
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        @RequestMapping("/register")
        public String register(User user) {
            userService.register(user);
            return "regOk";
        }
    }
    

4.2.3 父子工廠(父子容器) 拆分

4.2.4 父子容器問題

  • 問題

    按照現(xiàn)有父子工廠(容器)的開發(fā)方式,Service層沒有添加事務(wù)。

  • 問題成因

    獲取的是子容器的UserService,而子容器中沒有事務(wù)配置,所以獲取不到事務(wù)。

Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:調(diào)用業(yè)務(wù)對(duì)象、父子工廠拆分(applicationContext.xml、dispatcher.xml)

  • 解決方案

    之所以在子容器沒有實(shí)現(xiàn)事務(wù),是因?yàn)榘鼟呙璧娜康陌?,將service的包也交給子容器管理。

    子容器:只掃描控制器及與MVC相關(guān)的內(nèi)容
    <context:component-scan base-package="com.baizhi.controller"/>
    
    父容器:不掃描控制器與MVC相關(guān)的內(nèi)容
    <context:component-scan base-package="com.baizhi">
        <context:exclude-filter type="aspectj" expression="com.baizhi.controller"/>
    </context:component-scan>
    注意:在SpingBoot中不會(huì)出現(xiàn)父子容器的問題。
    

4.3 SpringMVC控制器調(diào)用業(yè)務(wù)對(duì)象總結(jié)(SSM)

4.3.1 完整編碼總結(jié)

  • web.xml

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:dispatcher.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  • dispatcher.xml

    <context:component-scan base-package="com.baizhi.controller"/>
    <mvc:annotation-driven/>
    
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
  • applicationContex.xml

    <context:component-scan base-package="com.baizhi">
        <context:exclude-filter type="aspectj" expression="com.baizhi.controller"/>
    </context:component-scan>
    <!--連接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/myschool?useSSL=false&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>
    </bean>
    <!-- 創(chuàng)建SqlSessionFactory SqlSessionFactoryBean-->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.baizhi.entity"/>
        <property name="mapperLocations">
            <list>
                <value>classpath:com.baizhi.mapper/*Mapper.xml</value>
            </list>
        </property>
    </bean>
    <!--創(chuàng)建DAO對(duì)象 MapperScannerConfigure-->
    <bean id="scanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
        <property name="basePackage" value="com.baizhi.dao"/>
    </bean>
    
    <!-- 配置事務(wù)-->
    <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
    <tx:annotation-driven transaction-manager="dataSourceTransactionManager"/>
    
  • DAO

    // **POJO**
    public class User implements Serializable {
        private Integer id;
        private String name;
        private String password;
    // **建表**
    create table t_user(
        id integer primary key auto_increment;
        name varchar(12),
        password varchar(12)
    );
    // **DAO**
    public interface UserDAO {
        void save(User user);
    }
    // **Mapper**
    <mapper namespace="com.baizhi.dao.UserDAO">
    
        <insert id="save">
            insert into admin(name,password) values(#{name},#{password})
        </insert>
    </mapper>
    
  • Service

    public interface UserService {
        void register(User user);
    }
    
    Service
    @Transactional
    public class UserServiceImpl implements UserService {
    
        @Autowired
        private UserDAO userDAO;
    
        @Override
        public void register(User user) {
            userDAO.save(user);
        }
    }
    
  • Controller

    @Controller
    @RequestMapping("/user")
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        @RequestMapping("/register")
        public String register(User user) {
            userService.register(user);
            return "regOk";
        }
    }
    

下一章:Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:控制器跳轉(zhuǎn)與作用域(一)文章來源地址http://www.zghlxwxcb.cn/news/detail-748085.html

到了這里,關(guān)于Spring MVC學(xué)習(xí)隨筆-控制器(Controller)開發(fā)詳解:調(diào)用業(yè)務(wù)對(duì)象、父子工廠拆分(applicationContext.xml、dispatcher.xml)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 什么是域控制器Domain Controller?

    一個(gè)域描述了一組用戶、系統(tǒng)、應(yīng)用程序、網(wǎng)絡(luò)、數(shù)據(jù)庫服務(wù)器和其他任何資源,這些資源都受到一組共同的管理規(guī)則的控制。通常,一個(gè)域還包括一個(gè)物理空間,比如一個(gè)辦公室或多個(gè)辦公室。如果你在域內(nèi),你就處于一個(gè)理論上安全和可信的空間。如果在外面,你就是不

    2024年02月07日
    瀏覽(27)
  • beego的控制器Controller篇 — 數(shù)據(jù)處理

    1.1 獲取參數(shù) 通過如下方式獲取數(shù)據(jù): GetString(key string) string GetStrings(key string) []string GetInt(key string) (int64, error) GetBool(key string) (bool, error) GetFloat(key string) (float64, error) 例如: 如果需要的數(shù)據(jù)是其他類型的,例如是 int 類型而不是 int64,那么你需要這樣處理: 1.2?獲取表單中的

    2024年01月17日
    瀏覽(18)
  • 5、Kubernetes核心技術(shù) - Controller控制器工作負(fù)載

    5、Kubernetes核心技術(shù) - Controller控制器工作負(fù)載

    目錄 一、Deployments - 控制器應(yīng)用 二、Deployment升級(jí)回滾和彈性收縮 2.1、創(chuàng)建一個(gè) 1.14 版本的 pod 2.2、應(yīng)用升級(jí) 2.3、查看升級(jí)狀態(tài) 2.4、查看歷史版本 2.5、應(yīng)用回滾 2.6、彈性伸縮? 三、StatefulSet - 有狀態(tài)應(yīng)用 四、DaemonSet - 守護(hù)進(jìn)程 五、Job - 單次任務(wù) 六、Cronjob - 定時(shí)任務(wù) Deplo

    2024年02月15日
    瀏覽(24)
  • 第三十章 Unity角色控制器 Character Controller

    第三十章 Unity角色控制器 Character Controller

    在我們之前的章節(jié)中,我們已經(jīng)了解了碰撞體和剛體。但是,對(duì)于剛體這個(gè)組件來講,有兩種使用方式。其一就是用它來模擬現(xiàn)實(shí)世界的移動(dòng)或碰撞效果(例如,門的開關(guān));其二就是使用代碼來控制物體移動(dòng)或碰撞(例如,角色的行走)。兩種方式使用場景不同而已。 本章

    2024年02月08日
    瀏覽(90)
  • 【P31】JMeter 循環(huán)控制器(Loop Controller)

    【P31】JMeter 循環(huán)控制器(Loop Controller)

    可以對(duì)部分邏輯按常量進(jìn)行循環(huán)迭代 選擇線程組右鍵 添加 邏輯控制器 循環(huán)控制器(Loop Controller) Loop Count:設(shè)置運(yùn)行次數(shù),Infinite 勾選為永久運(yùn)行 2.1、設(shè)置循環(huán)次數(shù) (1)、測試計(jì)劃右鍵 添加 線程(用戶) 線程組 參數(shù)默認(rèn)即可 (2)、線程組右鍵 添加 取樣器 調(diào)試取樣器

    2024年02月07日
    瀏覽(25)
  • 【P38】JMeter 隨機(jī)控制器(Random Controller)

    【P38】JMeter 隨機(jī)控制器(Random Controller)

    可以讓控制器內(nèi)部的邏輯隨機(jī)執(zhí)行一個(gè),一般用來模擬業(yè)務(wù)的不確定性;隨機(jī)控制器在線程迭代或者控制器循環(huán)的時(shí)候均會(huì)觸發(fā) 選擇線程組右鍵 添加 邏輯控制器 隨機(jī)控制器(Random Controller) 忽略子控制器塊(Ignore sub-controller blocks):子控制器功能失效,由交替控制器代替

    2024年02月07日
    瀏覽(25)
  • 【P30】JMeter 事務(wù)控制器(Transaction Controller)

    【P30】JMeter 事務(wù)控制器(Transaction Controller)

    可以生成一個(gè)額外的樣本,這樣能夠?qū)⑺乃凶釉刈鳛橐粋€(gè)計(jì)量單元進(jìn)行監(jiān)聽;事務(wù)控制器本身不包含任何業(yè)務(wù)邏輯,只是組合出一個(gè)新的計(jì)量單元 選擇線程組右鍵 添加 邏輯控制器 事務(wù)控制器(Transaction Controller) Generate parent sample:選中,事務(wù)控制器將作為其他取樣器

    2024年02月06日
    瀏覽(28)
  • 【P34】JMeter ForEach控制器(ForEach Controller)

    【P34】JMeter ForEach控制器(ForEach Controller)

    可以對(duì)一個(gè)組變量進(jìn)行循環(huán)迭代;該組件通常與后置處理器中的 JSON 提取器、正則提取器、邊界提取器等進(jìn)行聯(lián)合使用 選擇線程組右鍵 添加 邏輯控制器 ForEach控制器(ForEach Controller) 輸入變量前綴(Input variable prefix):默認(rèn)為一個(gè)空字符串作為前綴 開始循環(huán)字段(不包含)

    2024年02月06日
    瀏覽(35)
  • Kubernetes技術(shù)--k8s核心技術(shù)Controller控制器

    Kubernetes技術(shù)--k8s核心技術(shù)Controller控制器

    1.Controller概述 ? ?Controller是在集群上管理和運(yùn)行容器的對(duì)象。是一個(gè)實(shí)際存在的對(duì)象。 2.pod和Controller之間的關(guān)系 pod通過controller實(shí)現(xiàn)應(yīng)用的運(yùn)維,包括伸縮、滾動(dòng)升級(jí)等操作。 這里pod和controller通過label標(biāo)簽來建立關(guān)系。如下所示: 3.Deployment控制器應(yīng)用場景 -1:部署無狀態(tài)的應(yīng)

    2024年02月10日
    瀏覽(33)
  • 【P33】JMeter 臨界部分控制器(Critical Section Controller)

    【P33】JMeter 臨界部分控制器(Critical Section Controller)

    可以對(duì)指定代碼塊增加同步鎖,確保此代碼塊由單線程執(zhí)行;通過 Java synchronized 實(shí)現(xiàn) 選擇線程組右鍵 添加 邏輯控制器 臨界部分控制器(Critical Section Controller) 鎖名稱(Lock name):鎖名為空,認(rèn)為每個(gè)鎖為不同的鎖;鎖名相同,多個(gè)鎖認(rèn)為是同一個(gè)鎖,同一個(gè)時(shí)間點(diǎn)

    2024年02月07日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包