-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSpringMVC.drawio
More file actions
502 lines (502 loc) · 85.7 KB
/
Copy pathSpringMVC.drawio
File metadata and controls
502 lines (502 loc) · 85.7 KB
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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36">
<diagram name="第 1 页" id="-SzqAPXL_7oRkjiwEb7A">
<mxGraphModel dx="2735" dy="4207" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="-EdbTj7FJCB_akA6n4Iw-96" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;fillColor=#DFDFDF;strokeColor=#36393d;shadow=0;sketch=1;curveFitting=1;jiggle=2;gradientColor=none;" value="" vertex="1">
<mxGeometry height="775" width="1807" x="214" y="-2095" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-89" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;sketch=1;curveFitting=1;jiggle=2;shadow=0;" value="" vertex="1">
<mxGeometry height="669" width="1880" x="128" y="-3031" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-1" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;fillColor=#f9f7ed;strokeColor=#36393d;" value="Browser<br style="font-size: 25px"><font style="font-size: 21px"><font style="font-size: 21px" color="#ff306e">URL—<br>http://IP : port/Web工程路径/资源</font><br></font><br style="font-size: 25px">1.浏览器将返回的数据进行解析<br style="font-size: 25px">,并展示数据。<br style="font-size: 25px">2.浏览器端关联到的技术有—<br style="font-size: 25px">&nbsp; &nbsp; HTML,CSS,JS,JQuery,<br style="font-size: 25px">&nbsp; &nbsp; Vue...等。" vertex="1">
<mxGeometry height="330" width="360" x="162" y="-2924" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-2" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;fillColor=#fad9d5;strokeColor=#ae4132;" value="服务端/(tomcat)<br style="font-size: 25px;"><br style="font-size: 25px;">" vertex="1">
<mxGeometry height="580" width="1060" x="642" y="-2984" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-3" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-6" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-1">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-4" connectable="0" parent="-EdbTj7FJCB_akA6n4Iw-3" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontSize=22;labelBorderColor=#000000;fontStyle=1" value="HTTP响应" vertex="1">
<mxGeometry relative="1" x="0.2652" y="8" as="geometry">
<mxPoint x="-52" y="30.29" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-5" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-6" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.005;entryY=0.044;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-6" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;strokeColor=#666666;fontColor=#333333;fillColor=#DEDEDE;gradientColor=#FFFFFF;" value="Web层/视图层/View层<br style="font-size: 25px"><br style="font-size: 25px"><span style="background-color: rgb(255 , 255 , 204) ; font-size: 25px">功能 :&nbsp;</span><br style="font-size: 25px">1.接收用户请求;<br style="font-size: 25px">2.调用Service层,完成业<br style="font-size: 25px">务处理;<br style="font-size: 25px">3.返回响应数据;<br style="font-size: 25px">4.有可能需要请求重定向,<br style="font-size: 25px">或请求转发;<br style="font-size: 25px"><br style="font-size: 25px"><span style="background-color: rgb(255 , 255 , 204) ; font-size: 25px">技术 : (多元化 =&gt; MVC)</span><br style="font-size: 25px">1.HTML + CSS + JS<br style="font-size: 25px">2.JQuery<br style="font-size: 25px">3.Vue/其他前端框架<br style="font-size: 25px">4.servlet<br style="font-size: 25px">5.SpringMVC<br style="font-size: 25px"><font style="font-size: 25px">(PS : <font color="#35219c" style="font-size: 25px">4和5都在服务端解析</font>)</font>" vertex="1">
<mxGeometry height="520" width="290" x="662" y="-2944" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-7" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-9" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1.009;entryY=0.938;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-8" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-9" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.005;entryY=0.062;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-12">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-9" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;strokeColor=#666666;fontColor=#333333;fillColor=#DEDEDE;gradientColor=#FFFFFF;" value="Service层/业务层<br style="font-size: 25px;"><br style="font-size: 25px;"><span style="background-color: rgb(255, 255, 204); font-size: 25px;">功能 :&nbsp;</span><br style="font-size: 25px;">1.完成各种业务处理,提供<br style="font-size: 25px;">多种业务API接口,提供<br style="font-size: 25px;">多种可供调用的方法。<br style="font-size: 25px;"><br style="font-size: 25px;"><span style="background-color: rgb(255, 255, 204); font-size: 25px;">技术 : (专业化,专一)</span><br style="font-size: 25px;">1.JavaSE<br style="font-size: 25px;">2.Spring...等" vertex="1">
<mxGeometry height="520" width="290" x="1032" y="-2944" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-10" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-12" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1.002;entryY=0.902;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-11" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-12" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=-0.003;entryY=0.341;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-12" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;strokeColor=#666666;fontColor=#333333;fillColor=#DEDEDE;gradientColor=#FFFFFF;" value="DAO层/数据层/数据持久层<br style="font-size: 25px;"><br style="font-size: 25px;"><span style="background-color: rgb(255, 255, 204); font-size: 25px;">功能 :&nbsp;</span><br style="font-size: 25px;">1.完成对DB的操作(CRUD)<br style="font-size: 25px;"><br style="font-size: 25px;"><font color="#000000" style="background-color: rgb(255, 255, 204); font-size: 25px;">技术 : (多元化)</font><br style="font-size: 25px;">1.JDBC<br style="font-size: 25px;">2.数据库连接池<br style="font-size: 25px;">3.DBUtils<br style="font-size: 25px;">4.JdbcTemplate<br style="font-size: 25px;">5.MyBatis/MyBatis-Plus<br style="font-size: 25px;">..." vertex="1">
<mxGeometry height="520" width="290" x="1392" y="-2944" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-13" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;curved=1;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-6">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="582" y="-2842" />
<mxPoint x="582" y="-2908" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-14" connectable="0" parent="-EdbTj7FJCB_akA6n4Iw-13" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBorderColor=#000000;fontSize=22;fontStyle=1" value="<span style="font-size: 22px;"><font style="font-size: 22px;">HTTP请求</font></span>" vertex="1">
<mxGeometry relative="1" x="0.0652" y="-2" as="geometry">
<mxPoint x="-52" y="17.43" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-15" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.001;entryY=0.387;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-12">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1842" y="-2671" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-16" parent="1" style="image;html=1;image=img/lib/clip_art/computers/Database_128x128.png;rounded=0;fillColor=#DEDEDE;gradientColor=#FFFFFF;fontSize=25;align=left;fontStyle=1" value="" vertex="1">
<mxGeometry height="150" width="130" x="1832" y="-2784" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-17" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="&nbsp; &nbsp; DB :&nbsp;<br style="font-size: 25px;">&nbsp; &nbsp; Mysql, Oracle,&nbsp;<br style="font-size: 25px;">&nbsp; &nbsp; SQLServer, DB2..." vertex="1">
<mxGeometry height="110" width="240" x="1732" y="-2624" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-55" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;fillColor=#f9f7ed;strokeColor=#36393d;" value="Browser<br style="font-size: 25px"><font style="font-size: 21px"><font style="font-size: 21px" color="#ff306e">URL—<br>http://IP : port/Web工程路径/资源</font><br></font><br style="font-size: 25px">1.浏览器将返回的数据进行解析<br style="font-size: 25px">,并展示数据。<br style="font-size: 25px">2.浏览器端关联到的技术有—<br style="font-size: 25px">&nbsp; &nbsp; HTML,CSS,JS,JQuery,<br style="font-size: 25px">&nbsp; &nbsp; Vue...等。" vertex="1">
<mxGeometry height="330" width="360" x="250" y="-1850" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-56" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=0;strokeColor=#666666;fontColor=#333333;fillColor=#DEDEDE;gradientColor=#FFFFFF;" value="<font color="#ae1eb3">Web层的</font>MVC模式" vertex="1">
<mxGeometry height="660" width="730" x="800" y="-2015" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-57" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-58" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.859;entryY=0.995;entryDx=0;entryDy=0;strokeWidth=2;fontSize=28;align=left;entryPerimeter=0;" target="-EdbTj7FJCB_akA6n4Iw-70">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1762.5" y="-1795" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-58" parent="1" style="image;html=1;image=img/lib/clip_art/computers/Database_128x128.png;rounded=0;fillColor=#DEDEDE;gradientColor=#FFFFFF;fontSize=25;align=left;fontStyle=1" value="" vertex="1">
<mxGeometry height="150" width="130" x="1860" y="-1675" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-59" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=top;align=left;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="&nbsp; &nbsp; DB :&nbsp;<br style="font-size: 25px;">&nbsp; &nbsp; Mysql, Oracle,&nbsp;<br style="font-size: 25px;">&nbsp; &nbsp; SQLServer, DB2..." vertex="1">
<mxGeometry height="110" width="240" x="1760" y="-1515" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-60" connectable="0" parent="1" style="group" value="" vertex="1">
<mxGeometry height="190" width="320" x="890" y="-1955" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-61" parent="-EdbTj7FJCB_akA6n4Iw-60" style="ellipse;whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fillColor=#b1ddf0;fontSize=22;align=left;strokeColor=#10739e;" value="" vertex="1">
<mxGeometry height="190" width="320" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-62" parent="-EdbTj7FJCB_akA6n4Iw-60" style="text;strokeColor=none;fillColor=none;html=1;fontSize=28;fontStyle=1;verticalAlign=middle;align=center;rounded=1;whiteSpace=wrap;" value="Controller/控制器(servlet)" vertex="1">
<mxGeometry height="120" width="240" x="40" y="30" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-90" parent="-EdbTj7FJCB_akA6n4Iw-60" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="74.99598758200773" y="71.9985979786743" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-63" connectable="0" parent="1" style="group" value="" vertex="1">
<mxGeometry height="220" width="320" x="1210" y="-1705" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-64" parent="-EdbTj7FJCB_akA6n4Iw-63" style="ellipse;whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fillColor=#b1ddf0;fontSize=22;align=left;strokeColor=#10739e;" value="" vertex="1">
<mxGeometry height="180" width="300" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-65" parent="-EdbTj7FJCB_akA6n4Iw-63" style="text;strokeColor=none;fillColor=none;html=1;fontSize=28;fontStyle=1;verticalAlign=middle;align=center;rounded=1;whiteSpace=wrap;" value="Model/模型<br>(JavaBean<span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">/</span><div><span style="background-color: transparent; color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">Service/ Dao)</span></div>" vertex="1">
<mxGeometry height="101.05" width="230" x="30" y="25.26" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-91" parent="-EdbTj7FJCB_akA6n4Iw-63" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="66.99598758200773" y="69.9985979786743" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-66" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-62" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0.208;entryY=0.047;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fontSize=28;align=left;" target="-EdbTj7FJCB_akA6n4Iw-65">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-67" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-65" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;strokeWidth=2;fontSize=28;align=left;" target="-EdbTj7FJCB_akA6n4Iw-62">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-68" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-70" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=2;fontSize=28;align=left;" target="-EdbTj7FJCB_akA6n4Iw-58">
<mxGeometry relative="1" as="geometry">
<mxPoint x="1820" y="-1830" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-69" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-70" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=2;fontSize=28;align=left;" target="-EdbTj7FJCB_akA6n4Iw-64">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1580" y="-1805" />
<mxPoint x="1580" y="-1615" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-70" parent="1" style="text;strokeColor=#6c8ebf;fillColor=#dae8fc;html=1;fontSize=28;fontStyle=1;verticalAlign=middle;align=center;rounded=1;whiteSpace=wrap;gradientColor=#0FE7FF;" value="Service层/DAO层" vertex="1">
<mxGeometry height="120" width="240" x="1550" y="-1925" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-71" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-65" style="edgeStyle=orthogonalEdgeStyle;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=2;fontSize=28;align=left;" target="-EdbTj7FJCB_akA6n4Iw-70">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-72" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-55" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" target="-EdbTj7FJCB_akA6n4Iw-62">
<mxGeometry relative="1" as="geometry">
<mxPoint x="810" y="-1785" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-73" connectable="0" parent="-EdbTj7FJCB_akA6n4Iw-72" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];labelBorderColor=#000000;fontSize=25;fontStyle=1" value="<span style="font-size: 25px;"><font style="font-size: 25px;">HTTP请求</font></span>" vertex="1">
<mxGeometry relative="1" x="0.0652" y="-2" as="geometry">
<mxPoint x="-90.61" y="-0.5300000000000047" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-74" connectable="0" parent="1" style="group" value="" vertex="1">
<mxGeometry height="190" width="320" x="820" y="-1575" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-75" parent="-EdbTj7FJCB_akA6n4Iw-74" style="ellipse;whiteSpace=wrap;html=1;rounded=1;strokeWidth=2;fillColor=#b1ddf0;fontSize=22;align=left;strokeColor=#10739e;" value="" vertex="1">
<mxGeometry height="190" width="320" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-76" parent="-EdbTj7FJCB_akA6n4Iw-74" style="text;strokeColor=none;fillColor=none;html=1;fontSize=28;fontStyle=1;verticalAlign=middle;align=center;rounded=1;whiteSpace=wrap;" value="View/视图<br>(HTML, CSS,Vue...)" vertex="1">
<mxGeometry height="120" width="290" x="20" y="30" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-77" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-61" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.424;entryY=-0.029;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fontSize=28;align=left;" target="-EdbTj7FJCB_akA6n4Iw-76">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-78" connectable="0" parent="-EdbTj7FJCB_akA6n4Iw-77" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=28;" value="<b><font color="#1f8066">Data</font></b>" vertex="1">
<mxGeometry relative="1" x="-0.3623" y="-24" as="geometry">
<mxPoint x="9.26" y="37.79" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-79" edge="1" parent="1" source="-EdbTj7FJCB_akA6n4Iw-76" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;fontSize=25;fontStyle=1;align=left;strokeWidth=2;" target="-EdbTj7FJCB_akA6n4Iw-55">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-80" connectable="0" parent="-EdbTj7FJCB_akA6n4Iw-79" style="edgeLabel;html=1;align=left;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=#000000;fontStyle=1" value="HTTP响应" vertex="1">
<mxGeometry relative="1" x="0.2652" y="8" as="geometry">
<mxPoint x="-32.760000000000005" y="14.479999999999999" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-81" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=30;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="304" y="-2786" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-84" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1064.9959875820077" y="-2669.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-85" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1399.9959875820077" y="-2704.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-86" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1723.9959875820077" y="-2616.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-87" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="698.9959875820076" y="-2532.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-88" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1080.995987582008" y="-2941.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-92" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1576.9959875820077" y="-1899.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-93" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=25;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1828.9959875820077" y="-1593.0014020213257" as="geometry" />
</mxCell>
<mxCell id="-EdbTj7FJCB_akA6n4Iw-95" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=30;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="296.99598758200784" y="-1791.0014020213257" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-1" parent="1" style="text;html=1;fontSize=35;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#cdeb8b;strokeColor=#36393d;sketch=1;curveFitting=1;jiggle=2;" value="Java后端三层架构图" vertex="1">
<mxGeometry height="84" width="446" x="128" y="-3171" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-3" parent="1" style="text;html=1;fontSize=35;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#cdeb8b;strokeColor=#36393d;sketch=1;curveFitting=1;jiggle=2;" value="MVC模式示意图" vertex="1">
<mxGeometry height="84" width="446" x="214" y="-2218" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-5" parent="1" style="verticalLabelPosition=bottom;sketch=0;aspect=fixed;html=1;verticalAlign=top;strokeColor=none;align=center;outlineConnect=0;shape=mxgraph.citrix.browser;strokeWidth=4;" value="" vertex="1">
<mxGeometry height="180" width="117.93" x="264.07" y="2829.5" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-6" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="浏览器" vertex="1">
<mxGeometry height="48" width="100" x="271" y="3015.91" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-22" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;curved=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-19">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-79" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;curved=1;" target="v9iiZSDOCLwyM3xsL_51-78">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="550" y="3062" />
</Array>
<mxPoint x="801" y="3048" as="sourcePoint" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-7" parent="1" style="fillColor=#c0f5a9;dashed=0;outlineConnect=0;strokeWidth=2;html=1;align=center;fontSize=8;verticalLabelPosition=bottom;verticalAlign=top;shape=mxgraph.eip.message_dispatcher;" value="" vertex="1">
<mxGeometry height="273" width="417" x="802" y="2826" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-8" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="前端控制器 / 中央控制器 / 分发控制器" vertex="1">
<mxGeometry height="51" width="439" x="791" y="3114" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-9" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=35;fontStyle=5;verticalAlign=middle;align=center;fontColor=#B658D9;shadow=1;" value="DispatcherServlet" vertex="1">
<mxGeometry height="39" width="299" x="811" y="2832" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-10" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1.028;exitY=0.327;exitDx=0;exitDy=0;exitPerimeter=0;curved=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-12" connectable="0" parent="v9iiZSDOCLwyM3xsL_51-10" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="1-使用URL<div>发出HTTP请求</div>" vertex="1">
<mxGeometry relative="1" x="-0.3194" y="5" as="geometry">
<mxPoint x="43" y="8" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-14" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="244" y="2846" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-16" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="937.9992837667359" y="2932.000184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-17" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1049.639283766736" y="3015.9101844330494" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-31" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-19" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;shape=link;endArrow=none;endFill=0;strokeWidth=1;width=7.647058823529413;" target="v9iiZSDOCLwyM3xsL_51-28">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-19" parent="1" style="text;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#eeeeee;strokeColor=#36393d;" value="HandlerMapping" vertex="1">
<mxGeometry height="141" width="270" x="855" y="2550" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-21" parent="1" style="shape=mxgraph.signs.healthcare.brain;html=1;pointerEvents=1;fillColor=#000000;strokeColor=none;verticalLabelPosition=bottom;verticalAlign=top;align=center;" value="" vertex="1">
<mxGeometry height="85" width="98" x="819" y="2877" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-23" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="2-调用<div>处理器映射器</div>" vertex="1">
<mxGeometry x="908" y="2765" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-24" parent="1" style="text;html=1;fontSize=23;fontStyle=1;verticalAlign=middle;align=center;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="处<div>理</div><div>器</div><div>映</div><div>射</div><div>器</div>" vertex="1">
<mxGeometry height="169.5" width="40" x="797" y="2544.8" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-25" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="914.819283766736" y="2590.000184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-26" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-27" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="3-返回<span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">处理器</span><div><span style="background-color: light-dark(#ffffff, var(--ge-dark-color, #121212)); color: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));">执行链</span></div>" vertex="1">
<mxGeometry x="1100" y="2758" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-28" parent="1" style="text;html=1;fontSize=26;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#ffff88;strokeColor=#36393d;opacity=80;dashed=1;strokeWidth=2;" value="HandlerExecutionChain<div>(处理器执行链,类比Filter链)</div><div>包括HandlerInterceptor(拦截器)</div><div>[拦截器可能有多个]</div><div>和Handler(处理器)</div>" vertex="1">
<mxGeometry height="169" width="420" x="1230" y="2568.09" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-33" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1503.999283766736" y="2591.090184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-34" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1257.819283766736" y="2653.090184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-44" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-45">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1847" y="2936" />
</Array>
<mxPoint x="1834" y="2902" as="sourcePoint" />
<mxPoint x="1710.555523633957" y="3236.3529411764703" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-37" parent="1" style="shape=mxgraph.cisco.computers_and_peripherals.pc_adapter_card;html=1;pointerEvents=1;dashed=0;fillColor=#0371A5;strokeColor=#ffffff;strokeWidth=2;verticalLabelPosition=bottom;verticalAlign=top;align=center;outlineConnect=0;" value="" vertex="1">
<mxGeometry height="187" width="156" x="1589" y="2836" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-38" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.009;entryY=0.208;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-37">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-40" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="处理器适配器 (HandlerAdapter)" vertex="1">
<mxGeometry height="51" width="372" x="1415" y="3036" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-42" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="4-调用<div>处理器适配器</div>" vertex="1">
<mxGeometry x="1384" y="2897" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-43" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1534.999283766736" y="2922.090184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-51" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-46">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-45" parent="1" style="text;html=1;fontSize=26;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Handler(处理器),<div>即 Controller(控制器)</div>" vertex="1">
<mxGeometry height="108" width="298" x="1693.68" y="3157" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-52" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=1;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-48">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-59" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-45">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-46" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Service" vertex="1">
<mxGeometry height="108" width="121" x="1512.68" y="3157" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-58" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-46">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-48" parent="1" style="text;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="DAO" vertex="1">
<mxGeometry height="108" width="121" x="1330.68" y="3157" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-55" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-54" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.85;exitY=0.05;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-48">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-54" parent="1" style="shape=datastore;whiteSpace=wrap;html=1;fillColor=#dae8fc;gradientColor=#7ea6e0;strokeColor=#6c8ebf;shadow=1;strokeWidth=2;" value="<font style="font-size: 30px;"><b>DB</b></font>" vertex="1">
<mxGeometry height="108" width="110" x="1336.18" y="3306" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-57" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-48" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.15;entryY=0.05;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-54">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-60" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1349.679283766736" y="3189.000184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-61" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1859.679283766736" y="3180.000184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-62" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="1315.9992837667362" y="3323.000184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-63" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="5-处理器适配器<div>调用Handler</div>" vertex="1">
<mxGeometry x="1880" y="2988" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-64" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.75;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.058;entryY=0.787;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-5">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-65" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.045;entryY=0.179;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" target="v9iiZSDOCLwyM3xsL_51-37">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="2059" y="3211" />
<mxPoint x="2059" y="2869" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-66" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="6-处理器返回<div>ModelAndView</div>" vertex="1">
<mxGeometry x="1950" y="2871" as="geometry">
<mxPoint x="-17" y="-16" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-68" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.75;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;exitX=-0.029;exitY=0.756;exitDx=0;exitDy=0;exitPerimeter=0;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-69" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="7-返回<div>ModelAndView</div>" vertex="1">
<mxGeometry x="1408.18" y="2988" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-70" parent="1" style="text;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#eeeeee;strokeColor=#36393d;" value="视图解析器<div>(InternalResourceViewResolver)</div>" vertex="1">
<mxGeometry height="128" width="544.46" x="729" y="3306" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-71" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;curved=1;strokeWidth=3;" target="v9iiZSDOCLwyM3xsL_51-70">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1259" y="3099" />
<mxPoint x="1259" y="3241" />
<mxPoint x="1137" y="3241" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-72" edge="1" parent="1" source="v9iiZSDOCLwyM3xsL_51-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.158;exitY=0.02;exitDx=0;exitDy=0;curved=1;strokeWidth=3;exitPerimeter=0;">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="815" y="3257" />
<mxPoint x="745" y="3257" />
<mxPoint x="745" y="3086" />
<mxPoint x="800" y="3086" />
</Array>
<mxPoint x="800" y="3085" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-73" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="8-调用<div>视图解析器</div>" vertex="1">
<mxGeometry x="1164" y="3243" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-75" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="987.999283766736" y="3332.0001844330495" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-77" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="9-返回View" vertex="1">
<mxGeometry x="754" y="3209" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-78" parent="1" style="text;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#eeeeee;strokeColor=#36393d;" value="视图(View)<div>jsp<span style="font-weight: normal;">[</span>html<span style="font-weight: normal;">]</span> / thymeleaf / freemarker</div>" vertex="1">
<mxGeometry height="160" width="474.46" x="149" y="3274" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-80" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="10-进行视图渲染,<div>将Model中的数据填充到View中</div>" vertex="1">
<mxGeometry x="481" y="3180" as="geometry">
<mxPoint x="-10" y="-6" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-82" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=20;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="270.99928376673586" y="3313.000184433049" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-83" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=-15;textOpacity=25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="35.09" width="150.36" x="362.99928376673597" y="3364.0001844330495" as="geometry" />
</mxCell>
<mxCell id="v9iiZSDOCLwyM3xsL_51-84" connectable="0" parent="1" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=25;labelBorderColor=default;fontStyle=1" value="11-返回<div>HTTP响应</div>" vertex="1">
<mxGeometry x="573" y="2986" as="geometry" />
</mxCell>
<mxCell id="AKl6Hye9pIMKhjzOT8fz-2" parent="1" style="text;strokeColor=#36393d;fillColor=#eeeeee;html=1;fontSize=40;fontStyle=1;verticalAlign=middle;align=center;labelBackgroundColor=none;labelBorderColor=none;dashed=1;dashPattern=1 4;strokeWidth=2;glass=0;shadow=1;rounded=1;gradientColor=none;sketch=1;curveFitting=1;jiggle=2;" value="SpringMVC - 1 - 执行流程分析" vertex="1">
<mxGeometry height="163" width="816.22" x="839.1499999999999" y="2208" as="geometry" />
</mxCell>
<mxCell id="AKl6Hye9pIMKhjzOT8fz-3" parent="1" style="line;strokeWidth=5;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;shadow=1;fontSize=35;" value="" vertex="1">
<mxGeometry height="10" width="3485.63" x="-429.00000000000006" y="2146" as="geometry" />
</mxCell>
<mxCell id="AKl6Hye9pIMKhjzOT8fz-4" parent="1" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/png,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5h73uEfz8Ic/PJvmXe96VzuJkjVYIsVjHvOY5m53u1vzxS9+sVm2bFlz+9vfvvn3v//dXHbZZc0f//jH5pprrlmimkWx0+SBCIQ9f5q2oTPZ8cxnPrPZcccdm1122aX5yEc+Mq/29Pr233//Vn722Wc3n/70p1t6t912m2crwW9/+9vmVa96ldh2UoWJlquuumpWtlTEFlts0fDanoJ//etfzY9+9KPm+9//fvPtb3+7OfXUU5uLL744ZRqy8EDRA/FqXHTP0isJUlwWbnazmzUnnnhiwzigh8c97nENvUjg8MMPb/Htbne7Zp999mnp1M+LXvSi5lGPelTz9re/vTn33HObq6++uvn73//eLrnZfffdl3TskB5wDvDDAx/4wObZz3528853vrO56KKLOieHcnmFfMX2QPQIJ+D509t50pOeNK+mJ5xwQrPRRhs1F1544ayOoAZceeWVzac+9amW3nvvvYvjgyeddFJr539YcsP1yEc+sp14ITguNvzsZz9r3va2tzUvfvGLq4pmpvyMM85oe4hVCTqMeC3n9XzTTTdtX8dZj/mVr3ylfT3vSBrqCfJABMIJeFjsCEnBrW51q+blL39588IXvrBV3+te92qDFswxxxzTBkMCJTajAK/jjM098YlPbHgdXWx45Stf2ayzzjrNdtttV1U0PUT+eYwC3C+v5Cw6t+svyfOcc85p117ySh4wHR6IV+OeP8d111232WqrrbK1ZDaYXguw5557ztoxNshMMJhJhlGBV+773//+o2YzVHp6oqxzfM973lOV/sEPfnCVXcroLne5S0Pg/cUvftHQu/ZBkDS8jjP+utNOO6WyCNkEeiACYY8fGhMWH/7wh4s1JMjtt99+zd3vfvfZdYP02hhXpOfCbPG4YI011hhXVgPnwz2dcsopVenufOc7V9lZI3bavP/972/HGZmVz/XClYZlTYxfvvnNb25ufvObSxx4Qj0QgbDHD+51r3tdO0bXVUVejRknpHECjJOx5lB8V/oaPZMRLGFZKuB+2BJYA7///e9rzFob1lh+5jOfafde77rrrs3KK69cnRbDfffdtznkkEMGShPG/fPA6O9M/bunqagRu0JoZIMCPSdmixncHxQ4kOFLX/pSO2PMjCxLd37yk580X/3qVxsmLZYKGK8jWHFyTgmoL0MBr371q0tmrY7XfP5hlIYd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;" value="" vertex="1">
<mxGeometry height="113" width="124.6" x="320" y="2596.09" as="geometry" />
</mxCell>
<mxCell id="AKl6Hye9pIMKhjzOT8fz-5" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=0;shadow=1;sketch=0;rotation=0;" value="卡码笔记:notes.kamacoder.com" vertex="1">
<mxGeometry height="54" width="479.96" x="1548.04" y="3354.55" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-1" parent="1" style="text;html=1;fontSize=35;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#cdeb8b;strokeColor=#36393d;sketch=1;curveFitting=1;jiggle=2;" value="SpringMVC 自定义视图实例" vertex="1">
<mxGeometry height="84" width="446" x="211" y="-1179" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-5" edge="1" parent="1" source="0M2PEFljNgY0gz5TkbC_-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;curved=1;strokeWidth=3;" target="0M2PEFljNgY0gz5TkbC_-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-6" connectable="0" parent="0M2PEFljNgY0gz5TkbC_-5" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBorderColor=default;" value="<font style="font-size: 31px;">打出一个请求</font>" vertex="1">
<mxGeometry relative="1" x="-0.2713" y="4" as="geometry">
<mxPoint x="32" y="-25" as="offset" />
</mxGeometry>
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-2" parent="1" style="text;html=1;fontSize=35;fontStyle=1;verticalAlign=middle;align=center;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;arcSize=16;" value="请求表单" vertex="1">
<mxGeometry height="330" width="360" x="214" y="-1003" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-8" edge="1" parent="1" source="0M2PEFljNgY0gz5TkbC_-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;curved=1;strokeColor=default;strokeWidth=3;" target="0M2PEFljNgY0gz5TkbC_-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-3" parent="1" style="text;html=1;fontSize=28;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" value="Handler(处理器),<div>即 Controller(控制器)</div>" vertex="1">
<mxGeometry height="108" width="317" x="898" y="-947" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-10" edge="1" parent="1" source="0M2PEFljNgY0gz5TkbC_-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;curved=1;" target="0M2PEFljNgY0gz5TkbC_-9">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="1503" y="-478" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-7" parent="1" style="text;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#eeeeee;strokeColor=#36393d;" value="自定义视图解析器<div>(SpringMVC 提供)</div>" vertex="1">
<mxGeometry height="174" width="307" x="1349.68" y="-947" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-13" edge="1" parent="1" source="0M2PEFljNgY0gz5TkbC_-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;" target="0M2PEFljNgY0gz5TkbC_-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-9" parent="1" style="text;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=0;fillColor=#eeeeee;strokeColor=#36393d;" value="自定义视图(View)" vertex="1">
<mxGeometry height="115" width="306" x="1350.68" y="-550" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-12" edge="1" parent="1" source="0M2PEFljNgY0gz5TkbC_-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeWidth=3;" target="0M2PEFljNgY0gz5TkbC_-2">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-11" parent="1" style="text;html=1;fontSize=30;fontStyle=1;verticalAlign=middle;align=center;rounded=1;fillColor=#f9f7ed;strokeColor=#36393d;" value="返回结果的页面" vertex="1">
<mxGeometry height="115" width="306" x="787" y="-550" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-14" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=30;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1391.995987582008" y="-865.0014020213257" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-15" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=30;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="1541.9959875820077" y="-491.00140202132565" as="geometry" />
</mxCell>
<mxCell id="0M2PEFljNgY0gz5TkbC_-16" parent="1" style="text;strokeColor=none;fillColor=none;html=1;fontSize=25;fontStyle=1;verticalAlign=middle;align=center;textOpacity=30;rotation=-25;" value="Cyan_RA9" vertex="1">
<mxGeometry height="40" width="147" x="324.9959875820077" y="-531.0014020213256" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>