前面一篇有說道如何在MyEclipse中搭建maven項目,這里將繼續介紹如何在搭建好的基礎maven項目中引入我們常用的javaweb框架——SpringMVC!
①在建立好的maven項目中的pom.xml文件引入依賴,代碼如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > < modelVersion >4.0.0</ modelVersion > < groupId >wechat.cuiyongzhi.com</ groupId > < artifactId >wechat</ artifactId > < packaging >war</ packaging > < version >0.0.1-SNAPSHOT</ version > < name >wechat</ name > < url >http://maven.apache.org</ url > < dependencies > <!-- spring --> < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-test</ artifactId > < version >3.2.0.RELEASE</ version > </ dependency > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-webmvc</ artifactId > < version >3.2.0.RELEASE</ version > </ dependency > < dependency > < groupId >org.springframework</ groupId > < artifactId >spring-core</ artifactId > < version >3.2.0.RELEASE</ version > </ dependency > <!-- mybatis --> < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis</ artifactId > < version >3.1.1</ version > </ dependency > < dependency > < groupId >org.mybatis</ groupId > < artifactId >mybatis-spring</ artifactId > < version >1.1.1</ version > </ dependency > <!-- mysql --> < dependency > < groupId >mysql</ groupId > < artifactId >mysql-connector-java</ artifactId > < version >5.1.21</ version > </ dependency > <!-- junit測試 --> < dependency > < groupId >junit</ groupId > < artifactId >junit</ artifactId > < version >4.11</ version > < scope >test</ scope > </ dependency > <!-- mysql阿里連接池druid --> < dependency > < groupId >com.alibaba</ groupId > < artifactId >druid</ artifactId > < version >0.2.9</ version > </ dependency > <!-- spring aop包 --> < dependency > < groupId >org.aspectj</ groupId > < artifactId >aspectjweaver</ artifactId > < version >1.7.1</ version > </ dependency > <!-- json包 --> < dependency > < groupId >com.alibaba</ groupId > < artifactId >fastjson</ artifactId > < version >1.2.7</ version > </ dependency > <!-- 文件上傳包 --> < dependency > < groupId >commons-fileupload</ groupId > < artifactId >commons-fileupload</ artifactId > < version >1.2.2</ version > </ dependency > <!--servlet包 --> < dependency > < groupId >javax.servlet</ groupId > < artifactId >servlet-api</ artifactId > < version >3.0-alpha-1</ version > </ dependency > < dependency > < groupId >javax.servlet.jsp</ groupId > < artifactId >jsp-api</ artifactId > < version >2.1</ version > < scope >provided</ scope > </ dependency > < dependency > < groupId >javax.servlet</ groupId > < artifactId >jstl</ artifactId > < version >1.2</ version > </ dependency > <!-- 日志包 --> < dependency > < groupId >log4j</ groupId > < artifactId >log4j</ artifactId > < version >1.2.17</ version > </ dependency > </ dependencies > < build > < finalName >wechat</ finalName > </ build > </ project > |
②修改項目路徑下的web.xml文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
<? xml version = "1.0" encoding = "UTF-8" ?> < web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:web = "http://java.sun.com/xml/ns/javaee" 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 http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket.xsd" id = "WebApp_ID" version = "3.0" > < display-name >com.cuiyongzhi.wechat</ display-name > < context-param > < param-name >contextConfigLocation</ param-name > < param-value >classpath:spring.xml,classpath:spring-mybatis.xml</ param-value > <!-- ,classpath:spring-quartz.xml 用于做任務調度 任務定時都可以 --> </ context-param > < context-param > < param-name >log4jConfigLocation</ param-name > < param-value >classpath:log4j.properties</ param-value > </ context-param > < listener > < listener-class >org.springframework.web.util.Log4jConfigListener</ listener-class > </ listener > < context-param > < param-name >spring.profiles.active</ param-name > < param-value >dev</ param-value > </ context-param > < context-param > < param-name >spring.profiles.default</ param-name > < param-value >dev</ param-value > </ context-param > < context-param > < param-name >spring.liveBeansView.mbeanDomain</ param-name > < param-value >dev</ param-value > </ context-param > < 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 > < init-param > < param-name >forceEncoding</ param-name > < param-value >true</ param-value > </ init-param > </ filter > < listener > < description >spring監聽器</ description > < listener-class >org.springframework.web.context.ContextLoaderListener</ listener-class > </ listener > <!-- 防止內存溢出 --> < listener > < listener-class >org.springframework.web.util.IntrospectorCleanupListener</ listener-class > </ listener > < servlet > < description >spring mvc servlet</ description > < servlet-name >springMvc</ servlet-name > < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class > < init-param > < description >spring mvc 配置文件</ description > < param-name >contextConfigLocation</ param-name > < param-value >classpath:spring-mvc.xml</ param-value > </ init-param > < load-on-startup >1</ load-on-startup > </ servlet > < servlet > < servlet-name >interface_url-init_servlet</ servlet-name > < servlet-class >com.cuiyongzhi.web.start.InterfaceUrlIntiServlet</ servlet-class > < load-on-startup >1</ load-on-startup > </ servlet > < servlet-mapping > < servlet-name >springMvc</ servlet-name > < url-pattern >/</ url-pattern > </ servlet-mapping > < welcome-file-list > < welcome-file >/index.jsp</ welcome-file > </ welcome-file-list > < session-config > < session-timeout >300</ session-timeout > </ session-config > < error-page > < error-code >404</ error-code > < location >/WEB-INF/error/error.jsp</ location > </ error-page > < error-page > < error-code >500</ error-code > < location >/WEB-INF/error/error.jsp</ location > </ error-page > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.css</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.gif</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.jpg</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.js</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.xhtml</ url-pattern > </ servlet-mapping > < servlet-mapping > < servlet-name >default</ servlet-name > < url-pattern >*.html</ url-pattern > </ servlet-mapping > < filter > < filter-name >DruidWebStatFilter</ filter-name > < filter-class >com.alibaba.druid.support.http.WebStatFilter</ filter-class > < init-param > < param-name >exclusions</ param-name > < param-value >*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</ param-value > </ init-param > </ filter > < filter-mapping > < filter-name >DruidWebStatFilter</ filter-name > < url-pattern >/*</ url-pattern > </ filter-mapping > < servlet > < servlet-name >DruidStatView</ servlet-name > < servlet-class >com.alibaba.druid.support.http.StatViewServlet</ servlet-class > < init-param > <!-- 允許清空統計數據 --> < param-name >resetEnable</ param-name > < param-value >true</ param-value > </ init-param > < init-param > <!-- 用戶名 --> < param-name >loginUsername</ param-name > < param-value >cuiyongzhi</ param-value > </ init-param > < init-param > <!-- 密碼 --> < param-name >loginPassword</ param-name > < param-value >123456</ param-value > </ init-param > </ servlet > < servlet-mapping > < servlet-name >DruidStatView</ servlet-name > < url-pattern >/druid/*</ url-pattern > </ servlet-mapping > <!-- 訪問監控頁面:http://ip:port/projectName/druid/index.html --> < jsp-config > < jsp-property-group > < display-name >jspConfiguration</ display-name > < url-pattern >*.jsp</ url-pattern > < el-ignored >false</ el-ignored > < scripting-invalid >false</ scripting-invalid > < include-prelude >/WEB-INF/common/head.jsp</ include-prelude > </ jsp-property-group > </ jsp-config > </ web-app > |
③添加數據庫配置信息,這里項目配置的數據庫為MySQL,在 resources下新建config.properties配置文件,設置如下:
1
2
3
4
|
validationQuery=SELECT 1 jdbc_url=jdbc:mysql: //127.0.0.1:3306/wechat?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull jdbc_username=root jdbc_password= 123456789 |
④在 resources下新建spring.xml配置文件,設置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<? xml version = "1.0" encoding = "UTF-8" ?> < 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" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 引入屬性文件 --> < context:property-placeholder location = "classpath:config.properties" /> <!-- 自動掃描(自動注入) --> < context:component-scan base-package = "com.cuiyongzhi.web.service" /> < context:component-scan base-package = "com.cuiyongzhi.wechat.*" /> </ beans > |
⑤在 resources下新建spring-mvc.xml配置文件,設置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:mvc = "http://www.springframework.org/schema/mvc" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:p = "http://www.springframework.org/schema/p" xmlns:context = "http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自動掃描controller包下的所有類,使其認為spring mvc的控制器 --> < context:component-scan base-package = "com.cuiyongzhi.web.controller" /> <!-- 避免IE執行AJAX時,返回JSON出現下載文件 --> < bean id = "mappingJacksonHttpMessageConverter" class = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" > < property name = "supportedMediaTypes" > < list > < value >text/html;charset=UTF-8</ value > </ list > </ property > </ bean > <!-- 啟動Spring MVC的注解功能,完成請求和注解POJO的映射 --> < bean class = "org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > < property name = "messageConverters" > < list > < ref bean = "mappingJacksonHttpMessageConverter" /> <!-- json轉換器 --> </ list > </ property > </ bean > <!-- 對模型視圖名稱的解析,即在模型視圖名稱添加前后綴 --> < bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix = "/WEB-INF/views/" p:suffix = ".jsp" /> < bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" > < property name = "defaultEncoding" > < value >UTF-8</ value > </ property > < property name = "maxUploadSize" > < value >32505856</ value > <!-- 上傳文件大小限制為31M,31*1024*1024 --> </ property > < property name = "maxInMemorySize" > < value >4096</ value > </ property > </ bean > </ beans > |
⑥在 resources下新建spring-mybatis.xml配置文件,設置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:aop = "http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd "> <!-- 配置數據源 --> < bean name = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" init-method = "init" destroy-method = "close" > < property name = "url" value = "${jdbc_url}" /> < property name = "username" value = "${jdbc_username}" /> < property name = "password" value = "${jdbc_password}" /> <!-- 初始化連接大小 --> < property name = "initialSize" value = "5" /> <!-- 連接池最大使用連接數量 --> < property name = "maxActive" value = "100" /> <!-- 連接池最大空閑 --> < property name = "maxIdle" value = "10" /> <!-- 連接池最小空閑 --> < property name = "minIdle" value = "0" /> <!-- 獲取連接最大等待時間 --> < property name = "maxWait" value = "60000" /> < property name = "poolPreparedStatements" value = "true" /> < property name = "maxPoolPreparedStatementPerConnectionSize" value = "33" /> < property name = "validationQuery" value = "${validationQuery}" /> < property name = "testOnBorrow" value = "false" /> < property name = "testOnReturn" value = "false" /> < property name = "testWhileIdle" value = "true" /> <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --> < property name = "timeBetweenEvictionRunsMillis" value = "60000" /> <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --> < property name = "minEvictableIdleTimeMillis" value = "25200000" /> <!-- 打開removeAbandoned功能 --> < property name = "removeAbandoned" value = "true" /> <!-- 1800秒,也就是30分鐘 --> < property name = "removeAbandonedTimeout" value = "1800" /> <!-- 關閉abanded連接時輸出錯誤日志 --> < property name = "logAbandoned" value = "true" /> <!-- 監控數據庫 --> <!-- <property name="filters" value="stat" /> --> < property name = "filters" value = "mergeStat" /> </ bean > <!-- myBatis文件 --> < bean id = "sqlSessionFactory" class = "org.mybatis.spring.SqlSessionFactoryBean" > < property name = "dataSource" ref = "dataSource" /> <!-- 自動掃描entity目錄, 省掉Configuration.xml里的手工配置 --> < property name = "mapperLocations" value = "classpath:com/cuiyongzhi/web/mapping/*.xml" /> </ bean > < bean class = "org.mybatis.spring.mapper.MapperScannerConfigurer" > < property name = "basePackage" value = "com.cuiyongzhi.web.dao" /> < property name = "sqlSessionFactoryBeanName" value = "sqlSessionFactory" /> </ bean > <!-- 配置事務管理器 --> < bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" > < property name = "dataSource" ref = "dataSource" /> </ bean > <!-- 注解方式配置事物 --> <!-- <tx:annotation-driven transaction-manager="transactionManager" /> --> <!-- 攔截器方式配置事物 --> < tx:advice id = "transactionAdvice" transaction-manager = "transactionManager" > < tx:attributes > < tx:method name = "add*" propagation = "REQUIRED" /> < tx:method name = "append*" propagation = "REQUIRED" /> < tx:method name = "insert*" propagation = "REQUIRED" /> < tx:method name = "save*" propagation = "REQUIRED" /> < tx:method name = "update*" propagation = "REQUIRED" /> < tx:method name = "modify*" propagation = "REQUIRED" /> < tx:method name = "edit*" propagation = "REQUIRED" /> < tx:method name = "delete*" propagation = "REQUIRED" /> < tx:method name = "remove*" propagation = "REQUIRED" /> < tx:method name = "repair" propagation = "REQUIRED" /> < tx:method name = "delAndRepair" propagation = "REQUIRED" /> < tx:method name = "get*" propagation = "SUPPORTS" /> < tx:method name = "find*" propagation = "SUPPORTS" /> < tx:method name = "load*" propagation = "SUPPORTS" /> < tx:method name = "search*" propagation = "SUPPORTS" /> < tx:method name = "datagrid*" propagation = "SUPPORTS" /> < tx:method name = "*" propagation = "SUPPORTS" /> </ tx:attributes > </ tx:advice > < aop:config > < aop:pointcut id = "transactionPointcut" expression = "execution(* com.cuiyongzhi.web.service..*Impl.*(..))" /> < aop:advisor pointcut-ref = "transactionPointcut" advice-ref = "transactionAdvice" /> </ aop:config > <!-- 配置druid監控spring jdbc --> < bean id = "druid-stat-interceptor" class = "com.alibaba.druid.support.spring.stat.DruidStatInterceptor" > </ bean > < bean id = "druid-stat-pointcut" class = "org.springframework.aop.support.JdkRegexpMethodPointcut" scope = "prototype" > < property name = "patterns" > < list > < value >com.cuiyongzhi.web.service.*</ value > </ list > </ property > </ bean > < aop:config > < aop:advisor advice-ref = "druid-stat-interceptor" pointcut-ref = "druid-stat-pointcut" /> </ aop:config > </ beans > |
⑦在 resources下新建log4j.properties配置文件,用于日志的輸出等級以及輸出位置設置,設置如下:
到這里springmvc+mybatis的基本配置文件基本就完成了,大致的項目結構如下:
本篇主要以代碼示例為主,基本的的項目搭建就記錄到這里,下一篇我將簡述在這個框架下的一些簡單應用,感謝你的翻閱,如有疑問可以討論!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。