主頁 > 軟體設計 > SSM框架整合之練習篇

SSM框架整合之練習篇

2020-10-06 11:20:22 軟體設計

SSM的練習 :
        1開發環境
        資料庫:mysql5.5以上版本,
        Jdk:1.7
        開發環境:Eclipse mars2
        Spring:4.2.4
        Mybatis:3.2.7
        Tomcat:7
        2資料庫
        資料庫使用mysql 資料庫,

        1、創建crm資料庫
        2、將參考資料中的sql腳本匯入到資料庫中

        3工程搭建
        工程使用Springmvc、spring、mybatis框架整合完成,

        Dao層:SqlMapConfig.xml(空)
                applicationContext-dao.xml:資料庫連接池、SqlSessionFactory、Mapper的掃描器,
        Service層:
            配置包掃描器,掃描所有帶@Service注解的類,事務管理器、切面,
        表現層:
                Springmvc.xml:包掃描器@Controller、配置注解驅動、視圖決議器,
                Jsp:bootstrap
        Web.xml:配置spring監聽器,前端控制器,
        3.1SqlMapConfig.xml
        <?xml version="1.0" encoding="UTF-8" ?>
        <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

        <configuration>

        </configuration>
        3.2applicationContext-dao.xml
        <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
            xmlns:task="http://www.springframework.org/schema/task" 
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
                http://www.springframework.org/schema/mvc 
                http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 
                http://www.springframework.org/schema/context 
                http://www.springframework.org/schema/context/spring-context-4.2.xsd 
                http://www.springframework.org/schema/aop 
                http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
                http://www.springframework.org/schema/tx 
                http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
                http://www.springframework.org/schema/task
                http://www.springframework.org/schema/task/spring-task-4.2.xsd">

            <!-- 配置 讀取properties檔案 jdbc.properties -->
            <context:property-placeholder location="classpath:jdbc.properties" />

            <!-- 配置 資料源 -->
            <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
                <!-- 驅動 -->
                <property name="driverClassName" value="https://www.cnblogs.com/haizai/p/${jdbc.driver}" />
                <!-- url -->
                <property name="url" value="https://www.cnblogs.com/haizai/p/${jdbc.url}" />
                <!-- 用戶名 -->
                <property name="username" value="https://www.cnblogs.com/haizai/p/${jdbc.username}" />
                <!-- 密碼 -->
                <property name="password" value="https://www.cnblogs.com/haizai/p/${jdbc.password}" />
            </bean>

            <!-- 配置 Mybatis的工廠 -->
            <bean class="org.mybatis.spring.SqlSessionFactoryBean">
                <!-- 資料源 -->
                <property name="dataSource" ref="dataSource" />
                <!-- 配置Mybatis的核心 組態檔所在位置 -->
                <property name="configLocation" value="https://www.cnblogs.com/haizai/p/classpath:SqlMapConfig.xml" />
                <!-- 配置pojo別名 -->
                <property name="typeAliasesPackage" value="https://www.cnblogs.com/haizai/p/cn.baidu.core.bean"></property>
            </bean>

            <!-- 配置 1:原始Dao開發 介面實作類 Mapper.xml 三個 2:介面開發 介面 不寫實作類 Mapper.xml 二個 (UserDao、ProductDao 
                、BrandDao,,,,,,,) 3:介面開發、并支持掃描 cn.baidu.core.dao(UserDao,,,,,) 寫在此包下即可被掃描到 -->
            <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
                <property name="basePackage" value="https://www.cnblogs.com/haizai/p/cn.baidu.core.dao" />
            </bean>

        </beans>

        Jdbc.properties
        jdbc.driver=com.mysql.jdbc.Driver
        jdbc.url=jdbc:mysql://localhost:3306/crm?characterEncoding=utf-8
        jdbc.username=root
        jdbc.password=root
        3.3applicationContext-service.xml
        <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:aop="http://www.springframework.org/schema/aop" 
            xmlns:tx="http://www.springframework.org/schema/tx"
            xmlns:task="http://www.springframework.org/schema/task"
            xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
                http://www.springframework.org/schema/mvc 
                http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 
                http://www.springframework.org/schema/context 
                http://www.springframework.org/schema/context/spring-context-4.2.xsd 
                http://www.springframework.org/schema/aop 
                http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
                http://www.springframework.org/schema/tx 
                http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
                http://www.springframework.org/schema/task
                http://www.springframework.org/schema/task/spring-task-4.2.xsd
                http://code.alibabatech.com/schema/dubbo        
                http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
                
                
                <!-- 配置  掃描   @Service -->
                <context:component-scan base-package="cn.baidu.core.service"/>
                
                
                
        </beans>

        3.4applicationContext-trans.xml
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
            xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
            http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
            <!-- 事務管理器 -->
            <bean id="transactionManager"
                class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
                <!-- 資料源 -->
                <property name="dataSource" ref="dataSource" />
            </bean>
            <!-- 通知 -->
            <tx:advice id="txAdvice" transaction-manager="transactionManager">
                <tx:attributes>
                    <!-- 傳播行為 -->
                    <tx:method name="save*" propagation="REQUIRED" />
                    <tx:method name="insert*" propagation="REQUIRED" />
                    <tx:method name="add*" propagation="REQUIRED" />
                    <tx:method name="create*" propagation="REQUIRED" />
                    <tx:method name="delete*" propagation="REQUIRED" />
                    <tx:method name="update*" propagation="REQUIRED" />
                    <tx:method name="find*" propagation="SUPPORTS" read-only="true" />
                    <tx:method name="select*" propagation="SUPPORTS" read-only="true" />
                    <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
                </tx:attributes>
            </tx:advice>
            <!-- 切面 -->
            <aop:config>
                <aop:advisor advice-ref="txAdvice"
                    pointcut="execution(* cn.baidu.core.service.*.*(..))" />
            </aop:config>
        </beans>
        3.5Springmvc.xml
        <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
            xmlns:context="http://www.springframework.org/schema/context"
            xmlns:aop="http://www.springframework.org/schema/aop" 
            xmlns:tx="http://www.springframework.org/schema/tx"
            xmlns:task="http://www.springframework.org/schema/task"
            xsi:schemaLocation="http://www.springframework.org/schema/beans 
                http://www.springframework.org/schema/beans/spring-beans-4.2.xsd 
                http://www.springframework.org/schema/mvc 
                http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd 
                http://www.springframework.org/schema/context 
                http://www.springframework.org/schema/context/spring-context-4.2.xsd 
                http://www.springframework.org/schema/aop 
                http://www.springframework.org/schema/aop/spring-aop-4.2.xsd 
                http://www.springframework.org/schema/tx 
                http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
                http://www.springframework.org/schema/task
                http://www.springframework.org/schema/task/spring-task-4.2.xsd">        
                <!-- 加載屬性檔案 -->
                <context:property-placeholder location="classpath:resource.properties"/>
                <!-- 配置掃描 器 -->
                <context:component-scan base-package="cn.baidu.core.web.controller"/>
                <!-- 配置處理器映射器  配接器 -->
                <mvc:annotation-driven/>
                
                <!-- 配置視圖解釋器 jsp -->
                <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="prefix" value="https://www.cnblogs.com/WEB-INF/jsp/"/>
                    <property name="suffix" value="https://www.cnblogs.com/haizai/p/.jsp"/>
                </bean>
                
        </beans>

        3.6Web.xml
        <?xml version="1.0" encoding="UTF-8"?>
        <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
            http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
            <welcome-file-list>
                <welcome-file>customer.action</welcome-file>
            </welcome-file-list>
            <!-- 背景關系的位置 -->
            <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext-*.xml</param-value>
            </context-param>
            <!-- Spring的監聽器 -->
            <listener>
                <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
            </listener>


            <!-- POST提交過濾器 UTF-8 -->
            <filter>
                <filter-name>encoding</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>encoding</filter-name>
                <url-pattern>*.action</url-pattern>
            </filter-mapping>
            <!-- 前端控制器 -->
            <servlet>
                <servlet-name>crm</servlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <init-param>
                    <param-name>contextConfigLocation</param-name>
                    <!-- 此處不配置 默認找 /WEB-INF/[servlet-name]-servlet.xml -->
                    <param-value>classpath:springmvc.xml</param-value>
                </init-param>
                <load-on-startup>1</load-on-startup>
            </servlet>
            <servlet-mapping>
                <servlet-name>crm</servlet-name>
                <!-- 1:*.do *.action 攔截以.do結尾的請求 (不攔截 jsp png jpg .js .css) 2:/ 攔截所有請求 
                    (不攔截.jsp) 建議使用此種 方式 (攔截 .js.css .png) (放行靜態資源) 3:/* 攔截所有請求(包括.jsp) 此種方式 不建議使用 -->
                <url-pattern>*.action</url-pattern>
            </servlet-mapping>
        </web-app>


        3.7加入jsp及分頁標簽

        Tld檔案需要放到WEB-INF目錄下, tomcat的規定,當tomcat啟動時會自動加載,

        Jsp中使用標簽:



        4查詢條件初始化
        4.1需求

        初始化查詢條件下拉串列,

        4.2Sql
        SELECT * from base_dict WHERE dict_type_code='006'
        4.3Dao
        <?xml version="1.0" encoding="UTF-8" ?>
        <!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        <mapper namespace="com.baidu.crm.dao.BaseDictDao">
            <select id="getBaseDictList" parameterType="string" resultType="BaseDict">
                SELECT * from base_dict WHERE dict_type_code=#{typeCode}
            </select>
        </mapper>

        4.4Service
        @Service
        public class BaseDictServiceImpl implements BaseDictService {

            @Autowired
            private BaseDictDao baseDictDao;
            
            @Override
            public List<BaseDict> getBaseDictList(String typeCode) {
                List<BaseDict> list = baseDictDao.getBaseDictList(typeCode);
                return list;
            }

        }

        4.5Controller












        規則:子容器可以訪問父容器的物件,父容器不能訪問子容器的物件,
        public class CustomerController {
            
            @Autowired
            private BaseDictService baseDictService;
            @Value("${customer.source.code}")
            private String CustomerSourceCode;
            @Value("${customer.industry.code}")
            private String CustomerIndustryCode;
            @Value("${customer.level.code}")
            private String CustomerLevelCode;

            @RequestMapping("/list")
            public String showCustomerList(Model model) {
                //查詢字典表初始化下拉串列
                List<BaseDict> custSourceList = baseDictService.getBaseDictList(CustomerSourceCode);
                List<BaseDict> custIndustryList = baseDictService.getBaseDictList(CustomerIndustryCode);
                List<BaseDict> custLevelList = baseDictService.getBaseDictList(CustomerLevelCode);
                //把串列傳遞給jsp頁面
                model.addAttribute("fromType", custSourceList);
                model.addAttribute("industryType", custIndustryList);
                model.addAttribute("levelType", custLevelList);
                
                return "customer";
            }
        }

        5客戶串列展示
        5.1需求

        展示商品串列,并且可以根據查詢條件過濾查詢結果,并且實作分頁處理,

        5.2Sql
        SELECT
            a.cust_id,
            a.cust_name,
            a.cust_user_id,
            a.cust_create_id,
            b.dict_item_name cust_source,
            c.dict_item_name cust_industry,
            d.dict_item_name cust_level,
            a.cust_linkman,
            a.cust_phone,
            a.cust_mobile,
            a.cust_zipcode,
            a.cust_address,
            a.cust_createtime
        FROM
            customer a
        LEFT JOIN base_dict b ON a.cust_source = b.dict_id
        LEFT JOIN base_dict c ON a.cust_industry = c.dict_id
        LEFT JOIN base_dict d ON a.cust_level = d.dict_id
        WHERE
            cust_name LIKE '%馬%'
        AND cust_source = 6
        AND cust_industry = 2
        AND cust_level = 22

        5.3Dao
        <select id="getCustList" parameterType="QueryVo" resultType="customer">
                SELECT
                    a.cust_id,
                    a.cust_name,
                    a.cust_user_id,
                    a.cust_create_id,
                    b.dict_item_name cust_source,
                    c.dict_item_name cust_industry,
                    d.dict_item_name cust_level,
                    a.cust_linkman,
                    a.cust_phone,
                    a.cust_mobile,
                    a.cust_zipcode,
                    a.cust_address,
                    a.cust_createtime
                FROM
                    customer a
                LEFT JOIN base_dict b ON a.cust_source = b.dict_id
                LEFT JOIN base_dict c ON a.cust_industry = c.dict_id
                LEFT JOIN base_dict d ON a.cust_level = d.dict_id
                <where>
                    <if test="custName!=null and custName!=''">
                        AND    cust_name LIKE '%${custName}%'
                    </if>
                    <if test="custSource!=null and custSource!=''">
                        AND cust_source = #{custSource}
                    </if>
                    <if test="custIndustry!=null and custIndustry!=''">
                        AND cust_industry = #{custIndustry}
                    </if>
                    <if test="custLevel!=null and custLevel!=''">
                        AND cust_level = #{custLevel}
                    </if>
                </where>
                LIMIT #{start},#{rows}
            </select>

        增加count后的dao
        <mapper namespace="com.baidu.crm.dao.CustomerDao">
            
            <sql id="cust_query_where">
                <where>
                    <if test="custName!=null and custName!=''">
                        AND    cust_name LIKE '%${custName}%'
                    </if>
                    <if test="custSource!=null and custSource!=''">
                        AND cust_source = #{custSource}
                    </if>
                    <if test="custIndustry!=null and custIndustry!=''">
                        AND cust_industry = #{custIndustry}
                    </if>
                    <if test="custLevel!=null and custLevel!=''">
                        AND cust_level = #{custLevel}
                    </if>
                </where>
            </sql>
            
            <select id="getCustList" parameterType="QueryVo" resultType="customer">
                SELECT
                    a.cust_id,
                    a.cust_name,
                    a.cust_user_id,
                    a.cust_create_id,
                    b.dict_item_name cust_source,
                    c.dict_item_name cust_industry,
                    d.dict_item_name cust_level,
                    a.cust_linkman,
                    a.cust_phone,
                    a.cust_mobile,
                    a.cust_zipcode,
                    a.cust_address,
                    a.cust_createtime
                FROM
                    customer a
                LEFT JOIN base_dict b ON a.cust_source = b.dict_id
                LEFT JOIN base_dict c ON a.cust_industry = c.dict_id
                LEFT JOIN base_dict d ON a.cust_level = d.dict_id
                <include refid="cust_query_where"/>
                LIMIT #{start},#{rows}
            </select>
            <select id="getCustListCount" parameterType="QueryVo" resultType="int">
                SELECT count(*)
                FROM
                    customer a
                LEFT JOIN base_dict b ON a.cust_source = b.dict_id
                LEFT JOIN base_dict c ON a.cust_industry = c.dict_id
                LEFT JOIN base_dict d ON a.cust_level = d.dict_id
                <include refid="cust_query_where"/>
            </select>
        </mapper>

        5.4Service
        根據查詢條件查詢資料庫得到客戶串列,分頁條件,
        接收查詢條件QueryVo接收,使用page接收頁碼,
        1、通過page計算start,
        2、呼叫dao查詢客戶串列,
        3、做count處理,計算出此查詢條件中共查詢到多少條記錄,

        回傳結果:Page物件,
        條件:QueryVo
        @Service
        public class CustomerServiceImpl implements CustomerService {

            @Autowired
            private CustomerDao customerDao;
            
            @Override
            public Page<Customer> getCustList(QueryVo queryVo) {
        queryVo.setStart((queryVo.getPage() - 1) * queryVo.getRows());
                List<Customer> custList = customerDao.getCustList(queryVo);
                Page<Customer> page = new Page<Customer>();
                //設定客戶串列
                page.setRows(custList);
                page.setPage(queryVo.getPage());
                page.setSize(queryVo.getRows());
                //計算查詢總記錄數
                int total = customerDao.getCustListCount(queryVo);
                page.setTotal(total);
                return page;
            }

        }

        5.5Controller
        5.5.1分析
        1、接收頁面提交的查詢引數:
        保證jsp頁面提交的表單中的input 的name屬性和QueryVo中的屬性一致
        2、呼叫Service查詢客戶串列
        3、把客戶串列傳遞給頁面,


        @RequestMapping("/list")
            public String showCustomerList(Model model, QueryVo queryVo) throws Exception {
                
                String custName = queryVo.getCustName();
                if (custName != null && !"".equals(custName)) {
                    custName = new String(custName.getBytes("iso8859-1"), "utf-8");
                    queryVo.setCustName(custName);
                }
                //查詢字典表初始化下拉串列
                List<BaseDict> custSourceList = baseDictService.getBaseDictList(CustomerSourceCode);
                List<BaseDict> custIndustryList = baseDictService.getBaseDictList(CustomerIndustryCode);
                List<BaseDict> custLevelList = baseDictService.getBaseDictList(CustomerLevelCode);
                //查詢客戶串列
                Page<Customer> page = customerService.getCustList(queryVo);
                //把page放到request中
                model.addAttribute("page", page);
                
                //把串列傳遞給jsp頁面
                model.addAttribute("fromType", custSourceList);
                model.addAttribute("industryType", custIndustryList);
                model.addAttribute("levelType", custLevelList);
                
                //頁面回顯
                model.addAttribute("custName", queryVo.getCustName());
                model.addAttribute("custSource", queryVo.getCustSource());
                model.addAttribute("custIndustry", queryVo.getCustIndustry());
                model.addAttribute("custLevel", queryVo.getCustLevel());
                
                
                return "customer";
            }


        6修改客戶資訊
        6.1需求

        1、點擊客戶串列中的“修改”按鈕彈出客戶資訊修改對話框,并初始化客戶資訊
        2、點擊“保存修改”按鈕將修改后的結果保存到資料庫中

        6.2展示客戶資訊

        6.2.1分析
        請求的url:
        customer/edit.action
        引數:cust_id客戶id
        回傳值:回應json資料,直接由Customer轉換而來,需要使用@ResponseBody注解,

        6.2.2Dao層
        根據客戶id查詢客戶資訊,
        <select id="getCustomerById" parameterType="long" resultType="customer">
                select * from customer where cust_id = #{custId}
            </select>

        6.2.3Service層
            @Override
            public Customer getCustomerById(long custId) {
                Customer customer = customerDao.getCustomerById(custId);
                return customer;
            }

        6.2.4Controller
        要求回傳json資料
        請求的url:
        customer/edit.action
        引數:cust_id客戶id
        回傳值:回應json資料
        @RequestMapping("/edit")
            @ResponseBody
            public Customer getCustomerById(Long id) {
                Customer customer = customerService.getCustomerById(id);
                return customer;
            }


        6.3提交修改
        6.3.1分析
        請求的url:customer/update.action
        請求的方法:post
        引數:表單中的資料,
        回傳結果:OK

        6.3.2Dao層
        <update id="updateCustomerById" parameterType="customer">
                UPDATE customer
                <set>
                    <if test="cust_name!=null">
                    cust_name=#{cust_name},
                    </if>
                    <if test="cust_user_id!=null">
                    cust_user_id=#{cust_user_id},
                    </if>
                    <if test="cust_create_id!=null">
                    cust_create_id=#{cust_create_id},
                    </if>
                    <if test="cust_source!=null">
                    cust_source=#{cust_source},
                    </if>
                    <if test="cust_industry!=null">
                    cust_industry=#{cust_industry},
                    </if>
                    <if test="cust_level!=null">
                    cust_level=#{cust_level},
                    </if>
                    <if test="cust_linkman!=null">
                    cust_linkman=#{cust_linkman},
                    </if>
                    <if test="cust_phone!=null">
                    cust_phone=#{cust_phone},
                    </if>
                    <if test="cust_mobile!=null">
                    cust_mobile=#{cust_mobile},
                    </if>
                    <if test="cust_zipcode!=null">
                    cust_zipcode=#{cust_zipcode},
                    </if>
                    <if test="cust_address!=null">
                    cust_address=#{cust_address},
                    </if>
                    <if test="cust_createtime!=null">
                    cust_createtime=#{cust_createtime},
                    </if>
                </set>
                WHERE
                    cust_id = #{cust_id}
            </update>
        6.3.3Service層
        @Override
            public void updateCustomerById(Customer customer) {
                customerDao.updateCustomerById(customer);
            }

        6.3.4Controller
        接收引數:Customer接收,
        回應結果:OK字串,使用@ResponseBody
        請求的url:customer/update.action
        @RequestMapping(value="https://www.cnblogs.com/update", method=RequestMethod.POST)
            @ResponseBody
            public String updateCustomer(Customer customer) {
                customerService.updateCustomerById(customer);
                //直接向瀏覽器回應字串需要使用@ResponseBody
                return "OK";
                
            }

        7洗掉客戶
        7.1需求

        點擊客戶串列中的洗掉按鈕,提示“警告資訊”

        點擊確定后洗掉用戶資訊,并重繪頁面,

        分析:
        請求的url:customer/delete.action

        引數:id(客戶id)
        回應的內容:OK(字串需要使用@ResponseBody)

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/159287.html

標籤:面向對象

上一篇:1.序列比較演算法(全域序列比對及區域序列比對的python實作)

下一篇:MySQL——主從復制

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more