一、瞭解maven的本地倉庫及jar包管理[會用]
1、maven的環境準備
在pom.xml文件中,導入座標時,如果出現一個座標所引用的jar的版本不一致時。遵循優先聲明原則在前面的聲明的座標,jar引用優先。
通俗講:誰先導入 ,就引用誰的。
------- jar包衝突解決方式:
1、第一聲明原則:誰先導入 ,就引用誰的
2、直接和傳遞導入:直接導入jar包。傳遞導入:導入一個座標中包含需要的jar包
3、直接排除法:通過exclusions
------- pom.xml文件中的標籤的用法
1、dependencies :導入pom座標的父級標籤
2、plugins :導入插件
3、關於pom文件中,導入compiler和tomcat的標籤介紹
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- 導入tomcat插件時,一般會配置tomcat的編碼格式和端口-->
<configuration>
<uriEncoding>utf-8</uriEncoding>
<port>9999</port>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<!-- 源代碼的JDK依賴版本-->
<source>1.8</source>
<!-- 當前編譯的JDK依賴版本-->
<target>1.8</target>
<!-- 編譯時的編碼格式-->
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
4、關於idea工具中,創建的工程配置文件 *.iml的作用
特點:
1)文件是自動生成,不用手動設置
2)管理的是當前工程(module)中所有加載的jar的相關參數(路徑、jar包,被哪個module或project引用)
二、基於maven搭建父子工程
及mvc設計模式在工程構建中的應用[重點]
1、環境搭建(applicationContext-dao.xml文件的配置)
數據庫操作層的框架,配置文件的套路:
jdbc – 8個步驟(加載驅動—配置連接池Connection—拼接Sql — 獲取PreparaStatement執行sql語句的工具類 ---- 獲取查詢結果resultset ----遍歷查詢結果-----封裝查詢結果)
2、mybatis框架整合配置
1)配置pom.xml的座標(加載驅動)
<dependency>
<!-- 配置mysql驅動-->
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!-- mybatis框架所需的核心包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
2)配置連接池(德魯伊)
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<!--主要根據連接的數據庫,對 url、username和password進行設置。都指的連接的數據庫的相關參數-->
<property name="url" value="jdbc:mysql:///maven"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
3)掃描mybatis的dao的配置
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.dao"/>
</bean>
4)掃描實體類的配置
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--掃描pojo包,給包下所有pojo對象起別名-->
<property name="typeAliasesPackage" value="com.itheima.domain"/>
</bean>
5)編寫測試用例,測試配置的環境(特別注意,配置完成後,必須要先測試)
使用的測試jar:junit
測試類中的@Before的編寫
@Before
public void init(){
//讀取Spring的配置文件
ApplicationContext ac = new ClassPathXmlApplicationContext("spring/applicationContext-dao.xml");
itemsDao = ac.getBean(ItemsDao.class);
}
編寫一個查詢方法,測試dao的配置是否正確
@Test
public void testFindById(){
Items items = itemsDao.findById(1);
System.out.println(items);
}
3、mybatis添加事務配置
1)配置事務Transactional
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 被事務所管理的連接池 -->
<property name="dataSource" ref="dataSource"/>
</bean>
2)配置事務的通知
<!--配置事務的通知-->
<tx:advice id="advice">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true"/>
<tx:method name="select*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
3)配置切入點
<aop:config>
<!-- 下面配置表示 com.itheima.service.impl下所有子包及java文件都會觸發事務的管理 -->
<aop:pointcut id="pointcut" expression="execution(* com.itheima.service.impl.*.*(..))"/>
<!-- 將事務的配置和切入點進行整合-->
<aop:advisor advice-ref="advice" pointcut-ref="pointcut"/>
</aop:config>
4)配置完成後,進行測試
什麼是事務?
事務是管理一組對數據庫操作的步驟。
如何測試事務?
在一個service的方法中,對數據庫的數據進行多次增、刪或改的操作,然後手動拋一個異常。程序執行完後,看異常拋出之前的數據操作是否會回滾,如果回滾,事務則生效,否則 不生效。
4、web層的編寫實現
1)MVC設計模式中,C-controller,主要實現與前端界面的交互。主要做兩件事情:
1)接收前端傳遞的參數並校驗參數正確
2)返回前端請求的結果集
2)對配置文件進行配置。web.xml和springmvc.xml
web.xml
<!--編碼過濾器 解決post請求時的中文亂碼-->
<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>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--配置spring核心監聽器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--重新指定spring配置文件的路徑-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--springmvc的核心servlet-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc.xml
<!--組件掃描-->
<context:component-scan base-package="com.itheima.controller"/>
<!--處理器映射器,處理器適配器-->
<mvc:annotation-driven>
<mvc:message-converters>
<!-- 指定springmvc json轉換工具包使用fastjson -->
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"></bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!--視圖解析器-->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--釋放靜態資源-->
<mvc:default-servlet-handler/>
5、父工程與子module的關係
1)模塊可以直接使用父工程中添加的所有pom座標
2)模塊之間可以通過depenece進行相互的依賴
3)父子工程之間的啓動:
如果要對所有模塊進行clean的操作,則只需要對父工程(root)執行clean
如果是要安裝,則只需對root工程執行 install
注意:
如果修改了模塊中的前端代碼,爲了防止直接install時,前端代碼沒有更新,最好是先執行clean再執行install
###maven階段學習小結
1、關於idea工具如何來關聯maven環境
2、maven的pom文件的基本的標籤
1)確定一個倉庫jar包的三個核心座標
groupId
artifactId
version
2)properties 定義全局參數,配置座標的版本號
3)dependencyManagement 鎖定座標版本
4)dependency 引入pom座標的標籤
5) plugin 引入外部插件
6)resource標籤
<resources>
<resource>
<!-- 編譯工程時,設置額外編譯的文件目錄 -->
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>