1. 程式人生 > >maven整合SSM專案,Tomcat部署執行——SSM整合框架搭建

maven整合SSM專案,Tomcat部署執行——SSM整合框架搭建

開發十年,就只剩下這套架構體系了! >>>   

第一步:新增相關依賴包

各種包,分為為:springDI依賴包(最基礎的必備包),AOP相關依賴,springMVC依賴包,servlet及jsp相關依賴,資料庫庫依賴包,mybatis及Mybatis-spring依賴包等,上程式碼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.yusys.pro</groupId>
  5 <artifactId>NewsManagement</artifactId>
  6 <packaging>war</packaging>
  7 <version>0.0.1-SNAPSHOT</version>
  8 <name>NewsManagement Maven Webapp</name>
  9 <url>http://maven.apache.org</url>
 10 <dependencies>
 11 <dependency>
 12 <groupId>junit</groupId>
 13 <artifactId>junit</artifactId>
 14 <version>3.8.1</version>
 15 <scope>test</scope>
 16 </dependency>
 17 <!-- <dependency>
 18 <groupId>javax.servlet</groupId>
 19 <artifactId>javax.servlet-api</artifactId>
 20 <version>3.0.1</version>
 21 </dependency> -->
 22 <!-- sping相關依賴包 -->
 23 <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
 24 <dependency>
 25 <groupId>commons-logging</groupId>
 26 <artifactId>commons-logging</artifactId>
 27 <version>1.2</version>
 28 </dependency>
 29 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
 30 <dependency>
 31 <groupId>org.springframework</groupId>
 32 <artifactId>spring-context</artifactId>
 33 <version>4.3.13.RELEASE</version>
 34 </dependency>
 35 <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
 36 <dependency>
 37 <groupId>org.springframework</groupId>
 38 <artifactId>spring-core</artifactId>
 39 <version>4.3.13.RELEASE</version>
 40 </dependency>
 41 <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
 42 <dependency>
 43 <groupId>org.springframework</groupId>
 44 <artifactId>spring-beans</artifactId>
 45 <version>4.3.13.RELEASE</version>
 46 </dependency>
 47 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
 48 <dependency>
 49 <groupId>org.springframework</groupId>
 50 <artifactId>spring-context-support</artifactId>
 51 <version>4.3.13.RELEASE</version>
 52 </dependency>
 53 <!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
 54 <dependency>
 55 <groupId>org.springframework</groupId>
 56 <artifactId>spring-expression</artifactId>
 57 <version>4.3.13.RELEASE</version>
 58 </dependency>
 59 <!-- spring AOP 依賴包 -->
 60 <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
 61 <dependency>
 62 <groupId>org.springframework</groupId>
 63 <artifactId>spring-aspects</artifactId>
 64 <version>4.3.13.RELEASE</version>
 65 </dependency>
 66 
 67 <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
 68 <dependency>
 69 <groupId>org.springframework</groupId>
 70 <artifactId>spring-aop</artifactId>
 71 <version>4.3.13.RELEASE</version>
 72 </dependency>
 73 <!-- https://mvnrepository.com/artifact/aopalliance/aopalliance -->
 74 <dependency>
 75 <groupId>aopalliance</groupId>
 76 <artifactId>aopalliance</artifactId>
 77 <version>1.0</version>
 78 </dependency>
 79 <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
 80 <dependency>
 81 <groupId>org.aspectj</groupId>
 82 <artifactId>aspectjweaver</artifactId>
 83 <version>1.8.13</version>
 84 </dependency>
 85 <!-- springMVC依賴包 -->
 86 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
 87 <dependency>
 88 <groupId>org.springframework</groupId>
 89 <artifactId>spring-webmvc</artifactId>
 90 <version>4.3.13.RELEASE</version>
 91 </dependency>
 92 <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
 93 <dependency>
 94 <groupId>org.springframework</groupId>
 95 <artifactId>spring-web</artifactId>
 96 <version>4.3.13.RELEASE</version>
 97 </dependency>
 98 
 99 <!-- mybatis依賴包 -->
100 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
101 <dependency>
102 <groupId>org.mybatis</groupId>
103 <artifactId>mybatis</artifactId>
104 <version>3.4.1</version>
105 </dependency>
106 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
107 <dependency>
108 <groupId>org.mybatis</groupId>
109 <artifactId>mybatis-spring</artifactId>
110 <version>1.3.0</version>
111 </dependency>
112 
113 <!-- servlet及其他相關依賴 -->
114 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
115 <dependency>
116 <groupId>javax.servlet</groupId>
117 <artifactId>javax.servlet-api</artifactId>
118 <version>3.1.0</version>
119 <scope>provided</scope>
120 </dependency>
121 <!-- https://mvnrepository.com/artifact/javax.servlet/jsp-api -->
122 <dependency>
123 <groupId>javax.servlet</groupId>
124 <artifactId>jsp-api</artifactId>
125 <version>2.0</version>
126 <scope>provided</scope>
127 </dependency>
128 <!-- https://mvnrepository.com/artifact/log4j/log4j -->
129 <dependency>
130 <groupId>log4j</groupId>
131 <artifactId>log4j</artifactId>
132 <version>1.2.17</version>
133 </dependency>
134 <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
135 <dependency>
136 <groupId>javax.servlet</groupId>
137 <artifactId>jstl</artifactId>
138 <version>1.2</version>
139 </dependency>
140 
141 <!-- 資料庫相關依賴包 -->
142 <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
143 <dependency>
144 <groupId>org.springframework</groupId>
145 <artifactId>spring-jdbc</artifactId>
146 <version>4.3.13.RELEASE</version>
147 </dependency>
148 
149 <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
150 <dependency>
151 <groupId>commons-dbcp</groupId>
152 <artifactId>commons-dbcp</artifactId>
153 <version>1.4</version>
154 </dependency>
155 
156 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
157 <dependency>
158 <groupId>mysql</groupId>
159 <artifactId>mysql-connector-java</artifactId>
160 <version>6.0.6</version>
161 </dependency>
162 
163 <!-- 新增redis的jar 包 -->
164 <!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
165 <dependency>
166 <groupId>redis.clients</groupId>
167 <artifactId>jedis</artifactId>
168 <version>2.9.0</version>
169 </dependency>
170 
171  
172 
173 </dependencies>
174 
175 <build>
176 <plugins> <plugin> <!-- 專案報紅叉,下面子檔案沒有一個報紅叉原因是缺少外掛的配置項 ,jre不能修改成為1.7,update後即又重回1.5的原因-->
177 <artifactId>maven-compiler-plugin</artifactId> <configuration> <target>1.7</target> <source>1.7</source> <encoding>UTF-8</encoding> </configuration> 
178 </plugin>
179 </plugins> 
180 <finalName>NewsManagement</finalName>
181 </build>
182 </project>

複製程式碼

 

 第二步,配置幾個基礎檔案。應該從web.xml入手。這個是整個web程式的入口,相當於java的main函式,我在實際編碼時並沒有按照這個順序,這裡為了邏輯清楚,能夠串聯起來,我還是從這裡說起,上程式碼;並將進行相應說明:

1、配置web.xml

複製程式碼

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3 <display-name>OrdersForGoods</display-name>
 4 
 5 <display-name>Archetype Created Web Application</display-name>
 6 <!-- 配置監聽器載入上下文引數spring的配置檔案 ,這個的作用是當tomcat啟動程式時,首先會監聽,載入相應的配置,
  好比是application讀取檔案流,構建一個bean工廠,用來為依賴注入DI做準備--> 7 <context-param>
 8 <param-name>contextConfigLocation</param-name>
 9 <param-value>classpath:applicationContext-mybatis.xml</param-value>
10 </context-param>
11 <listener>
12 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
13 </listener>
14 <!-- 配置springmvc的servlet ,前端控制器作用就不說了,大家都明白-->
15 <servlet>
16 <servlet-name>springmvc</servlet-name> 注意:這裡的的名字一定要和springMVC的配置檔案XXX-servlet.xml中的XXX名字完全相等,否則報錯
17 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
18 <init-param>
19 <param-name>contextConfigLocation</param-name>
20 <param-value>classpath:springmvc-servlet.xml</param-value>
21 </init-param>
22 <load-on-startup>1</load-on-startup>
23 </servlet>
24 <servlet-mapping>
25 <servlet-name>springmvc</servlet-name>
26 <url-pattern>/</url-pattern><!--這裡用/是根目錄的意思,之前我用/*是有問題的,這兩者還是有區別的,大家自行文度娘-->
27 </servlet-mapping>
28 <!-- 配置過濾器 設定編碼格式-->
29 <filter>
30 <filter-name>encoding</filter-name>
31 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
32 <init-param>
33 <param-name>encoding</param-name>
34 <param-value>utf-8</param-value>
35 </init-param>
36 </filter>
37 <filter-mapping>
38 <filter-name>encoding</filter-name>
39 <url-pattern>/*</url-pattern>
40 </filter-mapping>
41 <!-- 配置log4j日誌的監聽 容器啟動就載入,同載入applicationContext.xml類似-->
42 <context-param>
43 <param-name>log4j</param-name>
44 <param-value>classpath:log4j.properties</param-value>
45 </context-param>
46 <listener>
47 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
48 </listener>
49 </web-app>

複製程式碼

2、applicationContext.xml

複製程式碼

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3   xmlns="http://www.springframework.org/schema/beans" 
 4   xmlns:aop="http://www.springframework.org/schema/aop"
 5   xmlns:context="http://www.springframework.org/schema/context" 
 6   xmlns:tx="http://www.springframework.org/schema/tx"
 7   xmlns:cache="http://www.springframework.org/schema/cache" 
 8   xmlns:p="http://www.springframework.org/schema/p"
 9   xsi:schemaLocation="http://www.springframework.org/schema/beans 
10      http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
11      http://www.springframework.org/schema/aop
12      http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
13      http://www.springframework.org/schema/context
14      http://www.springframework.org/schema/context/spring-context-4.3.xsd
15      http://www.springframework.org/schema/tx
16      http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
17      http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.3.xsd"
18      >
19      <!-- 載入jdbc屬性檔案 -->
20      <context:property-placeholder location="classpath:jdbc.properties"/>
21      <!-- 配置資料來源 -->
22      <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" scope="singleton">
23          <property name="driverClassName" value="${jdbc.driver}"/>
24          <property name="url" value="${jdbc.url}"/>
25         <property name="username" value="${jdbc.username}"/>
26          <property name="password" value="${jdbc.password}"/>    
27      </bean>
28      <!-- 讓事務註解生效 -->
29      <tx:annotation-driven/>
30      <!--配置事務 -->
31      <bean id="transaction" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
32      <property name="dataSource" ref="dataSource"/>
33      </bean>
34      <!-- 配置mybatis的sqlSessionFactory -->
35      <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
36      <property name="dataSource" ref="dataSource"/>
37      <property name="configLocation" value="classpath:mybatis-config.xml"/>
38      </bean>
39      <!-- mapper 介面所在包名,spring自動查詢下面mapper.xml並生產相應例項,讓介面和xml相關聯 -->
40      <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
41      <property name="basePackage" value="com.yusys.dao"/>
42      </bean>
43      
44 </beans>

複製程式碼

3、springmvc-servlet.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"
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:context="http://www.springframework.org/schema/context"
 6     xmlns:mvc="http://www.springframework.org/schema/mvc"
 7     xsi:schemaLocation="
 8         http://www.springframework.org/schema/beans
 9         http://www.springframework.org/schema/beans/spring-beans.xsd
10         http://www.springframework.org/schema/context
11         http://www.springframework.org/schema/context/spring-context.xsd
12         http://www.springframework.org/schema/mvc
13         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
14         <!-- 使專案所有註解生效 -->
15         <context:component-scan base-package="com.yusys"/>
16         <!-- 配置檢視解析器 -->
17         <bean id="" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
18             <property name="prefix" value="/WEB-INF/jsp/"/>
19             <property name="suffix" value=".jsp"/>
20         </bean>
21         
22         
23         
24         </beans>

複製程式碼

 

4、mybatis-config.xml

  這個檔案配置很少,主要是因為在SSM整合中,實際上主要是整合了mybatis,之前由mybatis進行配置的與資料庫的聯絡全交給了spring去做,如資料來源、連線池、事務等等。這些交給spring以後,當程式需要的時候,就會依賴注入的方式提供給程式用。springmvc主要作用可以先簡單理解為調配呼叫,檢視解析。

複製程式碼

1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5   <configuration>
 6     <settings>
 7           <setting name="lazyLoadingEnabled" value="true"/>
 8       </settings>
 9       <typeAliases>
10           <package name="com.yusys.entity"/>
11       </typeAliases>
12   </configuration>

複製程式碼

基礎的配置檔案就是這些,至於mapper.xml,屬於dao層的內容,我傾向於將它理解為java程式碼的另一種特殊存在形式,放在後文進行說明

第三步、就是編寫程式碼了(這裡只是為了演示說明這個過程,就放一個相關的entity、dao、service、controller,其他的有興趣的自己新增補充)。

1、entity實體類

複製程式碼

1 package com.yusys.entity;
 2 
 3 import java.util.Date;
 4 
 5 public class NewsDetail {
 6 
 7     private int id;
 8     private String title;
 9     private String summary;
10     private String author;
11     private Date createdate;
12     public int getId() {
13         return id;
14     }
15     public void setId(int id) {
16         this.id = id;
17     }
18     public String getTitle() {
19         return title;
20     }
21     public void setTitle(String title) {
22         this.title = title;
23     }
24     public String getSummary() {
25         return summary;
26     }
27     public void setSummary(String summary) {
28         this.summary = summary;
29     }
30     public String getAuthor() {
31         return author;
32     }
33     public void setAuthor(String author) {
34         this.author = author;
35     }
36     public Date getCreatedate() {
37         return createdate;
38     }
39     public void setCreatedate(Date createdate) {
40         this.createdate = createdate;
41     }
42     
43 }

複製程式碼

2、dao層

複製程式碼

1 package com.yusys.dao;
 2 
 3 import java.util.List;
 4 
 5 import com.yusys.entity.NewsDetail;
 6 
 7 public interface NewsDetailMapper {
 8     
 9     public List<NewsDetail> getAll();
10     
11     public List<NewsDetail> getNewsDetailByTitle();
12 }

複製程式碼

複製程式碼

1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 3   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 4   <mapper namespace="com.yusys.dao.NewsDetailMapper">
 5   <select id="getAll" resultType="NewsDetail">
 6       select * from news_detail
 7   </select>
 8   <select id="getNewsDetailByTitle" parameterType="NewsDetail" resultType="NewsDetail">
 9       select * from news_detail where title like concat('%',#{title},'%') 
10   </select>
11   </mapper>

複製程式碼

3、service層

複製程式碼

1 package com.yusys.service;
 2 
 3 import java.util.List;
 4 
 5 import com.yusys.entity.NewsDetail;
 6 
 7 public interface NewsDetailService {
 8 
 9     public abstract List<NewsDetail> getAll();
10 
11     public abstract List<NewsDetail> getNewsDetailByTitle();
12 
13 }

複製程式碼

複製程式碼

1 package com.yusys.service;
 2 
 3 import java.util.List;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Service;
 7 
 8 import com.yusys.dao.NewsDetailMapper;
 9 import com.yusys.entity.NewsDetail;
10 @Service
11 public class NewsDetailServiceImpl implements NewsDetailService {
12     @Autowired
13     NewsDetailMapper newsDetailMpper;
14     
15     /* (non-Javadoc)
16      * @see com.yusys.service.NewsDetailService#getAll()
17      */
18     @Override
19     public List<NewsDetail> getAll(){
20         return newsDetailMpper.getAll();
21     }
22     
23     /* (non-Javadoc)
24      * @see com.yusys.service.NewsDetailService#getNewsDetailByTitle()
25      */
26     @Override
27     public List<NewsDetail> getNewsDetailByTitle(){
28         return newsDetailMpper.getNewsDetailByTitle();
29     }
30 }

複製程式碼

 

4、controller層

複製程式碼

1 package com.yusys.controller;
 2 
 3 import java.util.List;
 4 
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.ui.Model;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 
10 import com.yusys.entity.NewsDetail;
11 import com.yusys.service.NewsDetailService;
12 @Controller
13 public class NewsDetailController {
14     @Autowired
15     NewsDetailService newsDetailService;
16     
17     @RequestMapping(value="/newsDetailList")
18     public String getAllDetail(Model model){
19         List<NewsDetail> list=newsDetailService.getAll();
20         model.addAttribute("list", list);
21         return "newsDetail";
22     }
23 }

複製程式碼

第四步、建立newsDetail.jsp進行顯示。

第五步、部署tomcat進行執行

1、

2、

3、點選下一步後新增專案後finish

4、tomcat未啟動是雙擊

5、進入Overview介面,選擇以下配置,關閉該介面

6、啟動tomcat,執行程式,注掉controller中的方法呼叫,讓其直接轉到jsp頁面,效果顯現,一切OK,但是放開裡面的方法,出現了問題,mysql的jar和tomcat的jar衝突的問題,具體問題及其他見相應的博文——maven整合SSM專案,Tomcat部署執行——