spring框架和mybatis,一個基本的spring+mybatis所需要的包

 2023-10-05 阅读 27 评论 0

摘要:spring+mybatis需要的包:org.springframework.spring-webmvc(spring框架DispatcherServlet需要,spring-webmvc會依賴spring-context,spring-context依賴其它主要spring包)org.springframework.spring-jdbc(jdbc需要,依賴spring

spring+mybatis需要的包:
org.springframework.spring-webmvc(spring框架DispatcherServlet需要,spring-webmvc會依賴spring-context,spring-context依賴其它主要spring包)
org.springframework.spring-jdbc(jdbc需要,依賴spring-tx)
org.mybatis.mybatis(mybatis-spring需要)
org.mybatis.mybatis-spring(SqlSessionFactory創建需要,mybatis需要)
mysql.mysql-connector-java(mysql數據庫驅動需要)

其它包:
javax.servlet.javax.servlet-api(HttpServletRequest,HttpServletResponse需要)
org.apache.httpcomponents.httpclient(調用其它工程的接口時需要)
log4j.log4j(mybatis需要)
junit.junit(test需要)

druid連接池:需要的包:
com.alibaba.druid(創建數據源需要,druid數據庫連接池需要)
可展示Druid的統計信息

c3p0連接池:需要的包
c3p0.c3p0

DBCP連接池:需要的包
commons-dbcp.commons-dbcp

JNDI連接池:需要的包
spring-context

log4j:需要的包
log4j.log4j(mybatis需要)

logback:需要的包
ch.qos.logback.logback-classic(依賴logback-core)

pom.xml

  1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3     <modelVersion>4.0.0</modelVersion>
  4     <groupId>com.jmu.ccjoin</groupId>
  5     <artifactId>Spring-mybatis</artifactId>
  6     <packaging>war</packaging>
  7     <version>0.0.1-SNAPSHOT</version>
  8     <name>Spring-mybatis</name>
  9     <url>http://maven.apache.org</url>
 10 
 11     <properties>
 12         <spring.version>4.3.0.RELEASE</spring.version>
 13     </properties>
 14     <dependencies>
 15         <!-- servlet -->
 16         <dependency>
 17             <groupId>javax.servlet</groupId>
 18             <artifactId>javax.servlet-api</artifactId>
 19             <version>4.0.1</version>
 20             <scope>provided</scope>
 21         </dependency>
 22 
 23         <!-- spring-webmvc 依賴了這個包,會自動依賴其它的spring包 -->
 24         <dependency>
 25             <groupId>org.springframework</groupId>
 26             <artifactId>spring-webmvc</artifactId>
 27             <version>${spring.version}</version>
 28         </dependency>
 29 
 30         <dependency>
 31             <groupId>org.springframework</groupId>
 32             <artifactId>spring-jdbc</artifactId>
 33             <version>${spring.version}</version>
 34         </dependency>
 35 
 36         <!-- Mybatis -->
 37         <dependency>
 38             <groupId>org.mybatis</groupId>
 39             <artifactId>mybatis</artifactId>
 40             <version>3.2.0</version>
 41         </dependency>
 42 
 43         <!-- Mybatis+Spring整合 -->
 44         <dependency>
 45             <groupId>org.mybatis</groupId>
 46             <artifactId>mybatis-spring</artifactId>
 47             <version>1.2.0</version>
 48         </dependency>
 49 
 50         <!-- mysql數據庫驅動 -->
 51         <dependency>
 52             <groupId>mysql</groupId>
 53             <artifactId>mysql-connector-java</artifactId>
 54             <version>5.1.40</version>
 55         </dependency>
 56 
 57         <!-- druid數據源 -->
 58         <dependency>
 59             <groupId>com.alibaba</groupId>
 60             <artifactId>druid</artifactId>
 61             <version>1.0.13</version>
 62         </dependency>
 63 
 64         <!-- c3p0數據源 -->
 65         <dependency>
 66             <groupId>c3p0</groupId>
 67             <artifactId>c3p0</artifactId>
 68             <version>0.9.1.2</version>
 69         </dependency>
 70 
 71         <!-- DBCP -->
 72         <dependency>
 73             <groupId>commons-dbcp</groupId>
 74             <artifactId>commons-dbcp</artifactId>
 75             <version>1.4</version>
 76         </dependency>
 77 
 78         <!-- log4j -->
 79         <dependency>
 80             <groupId>log4j</groupId>
 81             <artifactId>log4j</artifactId>
 82             <version>1.2.17</version>
 83         </dependency>
 84 
 85         <!-- logback -->
 86         <dependency>
 87             <groupId>ch.qos.logback</groupId>
 88             <artifactId>logback-classic</artifactId>
 89             <version>1.0.6</version>
 90         </dependency>
 91         
 92         <!-- 測試 -->
 93         <dependency>
 94             <groupId>junit</groupId>
 95             <artifactId>junit</artifactId>
 96             <version>3.8.1</version>
 97             <scope>test</scope>
 98         </dependency>
 99         
100         <!-- 支持CGLIB代理 -->
101         <dependency>
102             <groupId>cglib</groupId>
103             <artifactId>cglib</artifactId>
104             <version>3.1</version>
105         </dependency>
106 
107         <!-- httpClient -->
108         <dependency>
109             <groupId>org.apache.httpcomponents</groupId>
110             <artifactId>httpclient</artifactId>
111             <version>4.3.5</version>
112             <scope>compile</scope>
113         </dependency>
114     </dependencies>
115     <build>
116         <finalName>Spring-mybatis</finalName>
117     </build>
118 </project>

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
 5     version="2.5">
 6     <display-name>spring-mybatis</display-name>
 7     <context-param>
 8         <param-name>contextConfigLocation</param-name>
 9         <param-value>classpath:applicationContext.xml</param-value>
10     </context-param>
11     <context-param>
12         <param-name>log4jConfigLocation</param-name>
13         <param-value>classpath:logback.xml</param-value>
14     </context-param>
15     <listener>
16         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
17     </listener>
18 
19     <!-- <listener>
20         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
21     </listener> -->
22 
23     <servlet>
24         <servlet-name>servlet</servlet-name>
25         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
26         <init-param>
27             <param-name>contextConfigLocation</param-name>
28             <param-value>classpath:servlet.xml</param-value>
29         </init-param>
30     </servlet>
31     <servlet-mapping>
32         <servlet-name>servlet</servlet-name>
33         <url-pattern>*.action</url-pattern>
34     </servlet-mapping>
35 
36 </web-app>

applicationContext.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5            http://www.springframework.org/schema/beans/spring-beans.xsd
 6            http://www.springframework.org/schema/context
 7            http://www.springframework.org/schema/context/spring-context.xsd">
 8 
 9     <!-- 加載配置文件 -->
10     <context:property-placeholder
11         ignore-resource-not-found="true" ignore-unresolvable="true"
12         location="file:/var/opt/spring-mybatis/config.properties" />
13     <context:component-scan
14         base-package="com.jmu.ccjoin.entity,com.jmu.ccjoin.service,com.jmu.ccjoin.core,com.jmu.ccjoin.controller" />
15         
16     <context:annotation-config />
17     <import resource="classpath:applicationContext_datasource.xml"/>
18 </beans>

applicationContext_datasource.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans
 5            http://www.springframework.org/schema/beans/spring-beans.xsd
 6            http://www.springframework.org/schema/context
 7            http://www.springframework.org/schema/context/spring-context.xsd">
 8 
 9     <!-- 自帶的jndi連接池/這里使用了tomcat下的數據源 -->
10     <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
11         <property name="jndiName" value="java:comp/env/ccjoinDataSource" />
12     </bean>
13 
14     <!-- 配置Druid數據源 -->
15     <!-- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 
16         init-method="init" destroy-method="close"> <property name="driverClassName" 
17         value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" 
18         /> <property name="username" value="${jdbc.username}" /> <property name="password" 
19         value="${jdbc.password}" /> <property name="maxActive" value="${jdbc.maxPoolSize}" 
20         /> <property name="initialSize" value="${jdbc.initialPoolSize}" /> <property 
21         name="maxWait" value="${jdbc.maxIdleTime}" /> <property name="filters" value="stat,log4j" 
22         /> </bean> -->
23 
24     <!-- c3p0連接池 -->
25     <!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
26         destroy-method="close"> <property name="driverClass" value="${jdbc.driverClassName}"></property> 
27         <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" 
28         value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> 
29         <property name="minPoolSize" value="${jdbc.minPoolSize}" /> <property name="maxPoolSize" 
30         value="${jdbc.maxPoolSize}" /> <property name="initialPoolSize" value="${jdbc.initialPoolSize}" 
31         /> <property name="maxIdleTime" value="${jdbc.maxIdleTime}" /> </bean> -->
32 
33     <!-- DBCP連接池 -->
34     <!-- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
35         destroy-method="close"> <property name="driverClassName" value="${jdbc.driverClassName}" 
36         /> <property name="url" value="${jdbc.url}" /> <property name="username" 
37         value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" 
38         /> <property name="initialSize" value="${jdbc.initialPoolSize}" /> <property 
39         name="maxIdle" value="${jdbc.maxPoolSize}" /> <property name="minIdle" value="${jdbc.minPoolSize}" 
40         /> <property name="maxActive" value="${jdbc.maxIdleTime}" /> </bean> -->
41 
42     <!-- MyBatis SqlSessionFactoryBean 配置 -->
43     <!-- <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> 
44         <property name="dataSource" ref="dataSource" /> <property name="configLocation" 
45         value="classpath:mybatis/mybatis-config.xml" /> <property name="typeAliasesPackage" 
46         value="com.jmu.ccjoin.entity" /> <property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml" 
47         /> </bean> -->
48 
49     <!-- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
50         <property name="dataSource"> <ref bean="dataSource" /> </property> <property 
51         name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property> 
52         <property name="typeAliasesPackage" value="com.jmu.ccjoin.entity" /> <property 
53         name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml" /> </bean> -->
54     <!-- mybatis文件 -->
55     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
56         <property name="dataSource" ref="dataSource"></property>
57         <!-- <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property> -->
58         <!-- 批量定義別名 ,指定包名,自動掃描包中的類,別名即為類名,首字母大小寫無所謂 -->
59         <!-- 自動掃描entity目錄, 省掉Configuration.xml里的手工配置 -->
60         <property name="typeAliasesPackage" value="com.jmu.ccjoin.entity"></property>
61         <property name="mapperLocations" value="classpath:mybatis/mapper/*Mapper.xml"></property>
62     </bean>
63 
64     <!-- 配置事務 -->
65     <bean id="transactionManager"
66         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
67         <property name="dataSource" ref="dataSource" />
68     </bean>
69 
70 
71     <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
72         <property name="basePackage" value="com.jmu.ccjoin.dao"></property>
73         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
74     </bean>
75 </beans>           

spring框架和mybatis,file:/var/opt/spring-mybatis/config.properties

1 jdbc.driverClassName=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://172.16.1.23:3306/jmuv3?useUnicode=true&characterEncoding=utf8
3 jdbc.username=root
4 jdbc.password=123.com
5 jdbc.minPoolSize=5
6 jdbc.maxPoolSize=30
7 jdbc.initialPoolSize=10
8 jdbc.maxIdleTime=1800

servlet.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
 3     xmlns:mvc="http://www.springframework.org/schema/mvc"
 4     xsi:schemaLocation="
 5      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
 6      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
 7      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 8 
 9     <context:component-scan
10         base-package="com.jmu.ccjoin.controller" />
11 
12     <!-- 避免IE執行AJAX時,返回JSON出現下載文件 -->
13     <!-- <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> -->
14 
15     <!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
16         <property name="messageConverters">
17             <list>
18                 <ref bean="mappingJacksonHttpMessageConverter" />json轉換器
19             </list>
20         </property>
21     </bean> -->
22 
23     <!-- <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
24         <property name="resourceLoaderPath">
25             <value>/WEB-INF/view</value>
26         </property>
27         <property name="velocityProperties">
28             <props>
29                 <prop key="input.encoding">UTF-8</prop>
30                 <prop key="output.encoding">UTF-8</prop>
31                 <prop key="velocimacro.library">control/macros.vm</prop>
32             </props>
33         </property>
34     </bean> -->
35     
36     <!-- 攔截器 -->
37     <mvc:interceptors>
38         <bean class="com.jmu.ccjoin.interceptor.LogInterceptor" />
39     </mvc:interceptors>
40 </beans>

logback.xml

  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 
  3 <!-- 級別從高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
  4 <!-- 日志輸出規則 根據當前ROOT 級別,日志輸出時,級別高于root默認的級別時 會輸出 -->
  5 <!-- 以下 每個配置的 filter 是過濾掉輸出文件里面,會出現高級別文件,依然出現低級別的日志信息,通過filter 過濾只記錄本級別的日志 -->
  6 <!-- scan 當此屬性設置為true時,配置文件如果發生改變,將會被重新加載,默認值為true。 -->
  7 <!-- scanPeriod 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。當scan為true時,此屬性生效。默認的時間間隔為1分鐘。 -->
  8 <!-- debug 當此屬性設置為true時,將打印出logback內部日志信息,實時查看logback運行狀態。默認值為false。 -->
  9 <configuration scan="true" scanPeriod="60 seconds" debug="false">
 10 
 11     <!-- 動態日志級別 -->
 12     <jmxConfigurator/>
 13 
 14     <!-- 定義日志文件 輸出位置 -->
 15 <!--     <property name="log_dir" value="logs"/> -->
 16 
 17     <!-- 日志最大的歷史 30天 -->
 18 <!--     <property name="maxHistory" value="30"/> -->
 19 
 20     <!-- ConsoleAppender 控制臺輸出日志 -->
 21     <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
 22         <encoder>
 23             <pattern>
 24                 <!-- 設置日志輸出格式 -->
 25                 %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
 26             </pattern>
 27         </encoder>
 28     </appender>
 29 
 30     <!-- ERROR級別日志 -->
 31     <!-- 滾動記錄文件,先將日志記錄到指定文件,當符合某個條件時,將日志記錄到其他文件 RollingFileAppender -->
 32     <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
 33         <!-- 過濾器,只記錄WARN級別的日志 -->
 34         <!-- 果日志級別等于配置級別,過濾器會根據onMath 和 onMismatch接收或拒絕日志。 -->
 35         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 36             <!-- 設置過濾級別 -->
 37             <level>ERROR</level>
 38             <!-- 用于配置符合過濾條件的操作 -->
 39             <onMatch>ACCEPT</onMatch>
 40             <!-- 用于配置不符合過濾條件的操作 -->
 41             <onMismatch>DENY</onMismatch>
 42         </filter>
 43         <!-- 最常用的滾動策略,它根據時間來制定滾動策略.既負責滾動也負責出發滾動 -->
 44         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 45             <!--日志輸出位置 可相對、和絕對路徑 -->
 46             <fileNamePattern>
 47                 ${log.home_url}/error/%d{yyyy-MM-dd}/shop-admin.log
 48             </fileNamePattern>
 49             <!-- 可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件假設設置每個月滾動,且<maxHistory>是6, 則只保存最近6個月的文件,刪除之前的舊文件。注意,刪除舊文件是,那些為了歸檔而創建的目錄也會被刪除 -->
 50             <maxHistory>${log.maxHistory}</maxHistory>
 51         </rollingPolicy>
 52         <encoder>
 53             <pattern>
 54                 <!-- 設置日志輸出格式 -->
 55                 %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n
 56             </pattern>
 57         </encoder>
 58     </appender>
 59 
 60 
 61     <!-- WARN級別日志 appender -->
 62     <appender name="WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
 63         <!-- 過濾器,只記錄WARN級別的日志 -->
 64         <!-- 果日志級別等于配置級別,過濾器會根據onMath 和 onMismatch接收或拒絕日志。 -->
 65         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 66             <!-- 設置過濾級別 -->
 67             <level>WARN</level>
 68             <!-- 用于配置符合過濾條件的操作 -->
 69             <onMatch>ACCEPT</onMatch>
 70             <!-- 用于配置不符合過濾條件的操作 -->
 71             <onMismatch>DENY</onMismatch>
 72         </filter>
 73         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 74             <!--日志輸出位置 可相對、和絕對路徑 -->
 75             <fileNamePattern>${log.home_url}/warn/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
 76             <maxHistory>${log.maxHistory}</maxHistory>
 77         </rollingPolicy>
 78         <encoder>
 79             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
 80         </encoder>
 81     </appender>
 82 
 83 
 84     <!-- INFO級別日志 appender -->
 85     <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
 86         <filter class="ch.qos.logback.classic.filter.LevelFilter">
 87             <level>INFO</level>
 88             <onMatch>ACCEPT</onMatch>
 89             <onMismatch>DENY</onMismatch>
 90         </filter>
 91         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 92             <fileNamePattern>${log.home_url}/info/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
 93             <maxHistory>${log.maxHistory}</maxHistory>
 94         </rollingPolicy>
 95         <encoder>
 96             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
 97         </encoder>
 98     </appender>
 99 
100 
101     <!-- DEBUG級別日志 appender -->
102     <appender name="DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">
103         <filter class="ch.qos.logback.classic.filter.LevelFilter">
104             <level>DEBUG</level>
105             <onMatch>ACCEPT</onMatch>
106             <onMismatch>DENY</onMismatch>
107         </filter>
108         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
109             <fileNamePattern>${log.home_url}/debug/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
110             <maxHistory>${log.maxHistory}</maxHistory>
111         </rollingPolicy>
112         <encoder>
113             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
114         </encoder>
115     </appender>
116 
117 
118     <!-- TRACE級別日志 appender -->
119     <appender name="TRACE" class="ch.qos.logback.core.rolling.RollingFileAppender">
120         <filter class="ch.qos.logback.classic.filter.LevelFilter">
121             <level>TRACE</level>
122             <onMatch>ACCEPT</onMatch>
123             <onMismatch>DENY</onMismatch>
124         </filter>
125         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
126             <fileNamePattern>${log.home_url}/trace/%d{yyyy-MM-dd}/shop-admin.log</fileNamePattern>
127             <maxHistory>${log.maxHistory}</maxHistory>
128         </rollingPolicy>
129         <encoder>
130             <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %logger - %msg%n</pattern>
131         </encoder>
132     </appender>
133 
134 
135     <!-- root級別   DEBUG -->
136     <root>
137         <!-- 打印debug級別日志及以上級別日志 -->
138         <level value="debug"/>
139         <!-- 控制臺輸出 -->
140         <appender-ref ref="console"/>
141         <!-- 文件輸出 -->
142         <appender-ref ref="ERROR"/>
143         <appender-ref ref="INFO"/>
144         <appender-ref ref="WARN"/>
145         <appender-ref ref="DEBUG"/>
146         <appender-ref ref="TRACE"/>
147     </root>
148 </configuration>

?

轉載于:https://www.cnblogs.com/wzk-0000/p/9405399.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/117818.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息