<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/62b5986523dfab40400e8660/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62b5986523dfab40400e8660/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h3 y2 ff2 fs1 fc0 sc1 ls1 ws0">目录<span class="ff3 sc0 ls0"> </span></div><div class="t m0 x3 h3 y3 ff3 fs1 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h3 y4 ff2 fs1 fc0 sc1 ls1 ws0">概述<span class="_ _0"> </span><span class="ff3 sc0 ls0">...............................................................................................................................<span class="_ _1"></span>3 </span></div><div class="t m0 x1 h3 y5 ff3 fs1 fc0 sc0 ls2 ws0">Framework<span class="ff2 sc1 ls1">概念<span class="_ _2"> </span></span><span class="ls0">...........................................................................................................<span class="_ _1"></span>3 </span></div><div class="t m0 x1 h3 y6 ff3 fs1 fc0 sc0 ls3 ws0">St<span class="_ _3"></span>r<span class="_ _3"></span>u<span class="_ _3"></span>t<span class="_ _3"></span>s<span class="_ _3"></span><span class="ff2 sc1 ls4">的概念和体系结构<span class="_ _4"> </span></span><span class="ls0">.............................................................................................<span class="_ _1"></span>4 </span></div><div class="t m0 x4 h4 y7 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _3"></span>uts<span class="_ _3"></span><span class="ff2 ls0">的与</span><span class="ls6 ws1">We<span class="_ _3"></span>b<span class="_ _3"></span> A<span class="_ _1"></span>p<span class="_ _1"></span>p<span class="_ _3"></span></span><span class="ff2 ls0">的关系</span><span class="ls7">.......................................................................................................<span class="_ _3"></span>4 </span></div><div class="t m0 x4 h4 y8 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _3"></span>uts<span class="_ _3"></span><span class="ff2 ls0">的体系<span class="_ _5"></span>结构<span class="_ _6"> </span><span class="ff1 ls7">.....................................................................................................................<span class="_ _3"></span>4 </span></span></div><div class="t m0 x5 h4 y9 ff2 fs0 fc0 sc0 ls0 ws0">从视图角度(<span class="ff1 ls8">Vi<span class="_ _3"></span>e<span class="_ _3"></span>w<span class="_ _3"></span></span>)<span class="_ _6"> </span><span class="ff1 ls7">......................................................................................................<span class="_ _3"></span>5 </span></div><div class="t m0 x5 h4 ya ff2 fs0 fc0 sc0 ls0 ws0">从模型角度(<span class="ff1 ls9">Model</span>)<span class="_ _2"> </span><span class="ff1 ls7">....................................................................................................<span class="_ _3"></span>5 </span></div><div class="t m0 x5 h4 yb ff2 fs0 fc0 sc0 ls0 ws0">从控制器角度(<span class="ff1 lsa">Controller</span>)<span class="_ _2"> </span><span class="ff1 ls7">..........................................................................................<span class="_ _3"></span>5 </span></div><div class="t m0 x4 h4 yc ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _3"></span>uts<span class="_ _3"></span><span class="ff2 ls0">的基本<span class="_ _5"></span>组件包<span class="_ _6"> </span><span class="ff1 ls7">.................................................................................................................<span class="_ _3"></span>5 </span></span></div><div class="t m0 x1 h3 yd ff3 fs1 fc0 sc0 lsb ws2">S<span class="_ _7"></span>truts framework<span class="ff2 sc1 lsc ws0">的工作原理和组件<span class="_ _1"></span></span><span class="ls0 ws0">.........................................................................<span class="_ _1"></span>6 </span></div><div class="t m0 x4 h4 ye ff1 fs0 fc0 sc0 lsd ws3">Struts A<span class="_ _5"></span>ctionServlet<span class="ff2 ls0 ws0">控制器对象<span class="ff1 ls7">...............................................................................................<span class="_ _8"></span>7 </span></span></div><div class="t m0 x4 h2 yf ff1 fs0 fc0 sc0 lse ws4">Struts Acti<span class="_ _5"></span>on <span class="_ _8"></span>Classes<span class="_ _3"></span><span class="ls7 ws0">.................................................................................................................<span class="_ _3"></span>7 </span></div><div class="t m0 x4 h2 y10 ff1 fs0 fc0 sc0 ls7 ws5">Struts Acti<span class="_ _5"></span>on <span class="_ _8"></span>Mapping<span class="_"> </span><span class="ws0">..............................................................................................................<span class="_ _3"></span>8 </span></div><div class="t m0 x4 h4 y11 ff2 fs0 fc0 sc0 ls0 ws0">使用<span class="ff1 lsf">ActionForward</span>导航<span class="_ _2"> </span><span class="ff1 ls7">..........................................................................................................<span class="_ _3"></span>9 </span></div><div class="t m0 x4 h4 y12 ff1 fs0 fc0 sc0 ls10 ws6">Struts ActionForm Bean<span class="ff2 ls0 ws0">捕获表单数据<span class="_ _3"></span><span class="ff1 ls11">..................................................................................<span class="_ _3"></span>10 </span></span></div><div class="t m0 x4 h4 y13 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="ff2 ls0">的其他组件<span class="_ _6"> </span></span><span class="ls7">...................................................................................................................<span class="_ _1"></span>1<span class="_ _5"></span>1 </span></div><div class="t m0 x5 h2 y14 ff1 fs0 fc0 sc0 ls12 ws7">V<span class="_ _9"></span>alidation Framew<span class="_ _5"></span>ork for Struts<span class="_ _1"></span><span class="ls7 ws0">.....................................................................................<span class="_ _1"></span>1<span class="_ _7"></span>1 </span></div><div class="t m0 x5 h2 y15 ff1 fs0 fc0 sc0 lsd ws8">Struts T<span class="_ _9"></span>agLib<span class="_ _1"></span><span class="ls7 ws0">...................................................................................................................<span class="_ _1"></span>1<span class="_ _5"></span>1 </span></div><div class="t m0 x5 h2 y16 ff1 fs0 fc0 sc0 lse ws0">BeanUtils<span class="ls7">.........................................................................................................................<span class="_ _1"></span>1<span class="_ _5"></span>1 </span></div><div class="t m0 x5 h2 y17 ff1 fs0 fc0 sc0 ls13 ws0">Collections<span class="_ _2"> </span><span class="ls7">......................................................................................................................<span class="_ _3"></span>12 </span></div><div class="t m0 x5 h2 y18 ff1 fs0 fc0 sc0 lsa ws0">Digester<span class="_ _a"> </span><span class="ls7">...........................................................................................................................<span class="_ _8"></span>12 </span></div><div class="t m0 x1 h3 y19 ff3 fs1 fc0 sc0 ls3 ws0">St<span class="_ _3"></span>r<span class="_ _3"></span>u<span class="_ _3"></span>t<span class="_ _3"></span>s<span class="_ _3"></span><span class="ff2 sc1 ls14">配置文件简介<span class="_ _4"> </span></span><span class="ls0">...................................................................................................<span class="_ _1"></span>12 </span></div><div class="t m0 x4 h4 y1a ff2 fs0 fc0 sc0 ls0 ws0">有关<span class="ff1 ls15 ws9">Struts Controller</span>及其<span class="_ _5"></span>相关的的配置描述<span class="_ _4"> </span><span class="ff1 ls11">......................................................................<span class="_ _3"></span>12 </span></div><div class="t m0 x4 h4 y1b ff2 fs0 fc0 sc0 ls0 ws0">有关<span class="ff1 ls16 wsa">struts tag lib</span>的配置描述<span class="_ _1"></span><span class="ff1 ls7">.................................................................................................<span class="_ _8"></span>13 </span></div><div class="t m0 x4 h4 y1c ff2 fs0 fc0 sc0 ls0 ws0">有关<span class="ff1 ls12 wsb">Struts Ac<span class="_ _5"></span>tion <span class="_ _3"></span>Mapping<span class="ff2 ls0 ws0">的配置描述<span class="_ _6"> </span><span class="ff1 ls11">................................................................................<span class="_ _3"></span>13 </span></span></span></div><div class="t m0 x5 h4 y1d ff1 fs0 fc0 sc0 ls17 ws0">Form-bean<span class="ff2 ls0">元素<span class="_ _a"> </span></span><span class="ls7">...............................................................................................................<span class="_ _3"></span>14 </span></div><div class="t m0 x5 h4 y1e ff1 fs0 fc0 sc0 ls18 ws0">Action<span class="ff2 ls0">元素<span class="_ _8"></span></span><span class="ls7">......................................................................................................................<span class="_ _3"></span>14 </span></div><div class="t m0 x1 h3 y1f ff3 fs1 fc0 sc0 ls3 ws0">St<span class="_ _3"></span>r<span class="_ _3"></span>u<span class="_ _3"></span>t<span class="_ _3"></span>s<span class="_ _3"></span><span class="ff2 sc1 ls19">高级特性(</span><span class="ls0 wsc">S<span class="_ _7"></span>truts Advanced <span class="_ _3"></span>Feature<span class="ff2 sc1 ws0">)<span class="_ _8"></span></span><span class="ws0">.........................................................<span class="_ _1"></span>16 </span></span></div><div class="t m0 x4 h4 y20 ff2 fs0 fc0 sc0 ls0 ws0">验证<span class="ff1 ls7">...............................................................................................................................<span class="ls1a">..........<span class="_ _3"></span>16 </span></span></div><div class="t m0 x4 h4 y21 ff2 fs0 fc0 sc0 ls0 ws0">使用异常处理声明<span class="_ _8"></span><span class="ff1 ls7">.................................................................................................................<span class="_ _3"></span>18 </span></div><div class="t m0 x4 h4 y22 ff2 fs0 fc0 sc0 ls0 ws0">使用应用模块(<span class="ff1 ls1b wsd">Application Mo<span class="_ _5"></span>dules<span class="ff2 ls0 ws0">)<span class="_ _1"></span><span class="ff1 ls11">...............................................................................<span class="_ _3"></span>20 </span></span></span></div><div class="t m0 x4 h4 y23 ff2 fs0 fc0 sc0 ls0 ws0">把<span class="ff1 ls1c">JSP</span>放到<span class="ff1 ls1d">WEB-INF</span>后以保护<span class="ff1 ls1c">JSP</span>源代码<span class="_ _2"> </span><span class="ff1 ls11">............................................................................<span class="_ _3"></span>21 </span></div><div class="t m0 x4 h4 y24 ff2 fs0 fc0 sc0 ls0 ws0">使用<span class="ff1 lse wse"> Prebuilt <span class="_ _b"></span>Action<span class="ff2 ls0 ws0">类提升开发效率<span class="_ _2"> </span><span class="ff1 ls11">..................................................................................<span class="_ _8"></span>22 </span></span></span></div><div class="t m0 x1 h3 y25 ff3 fs1 fc0 sc0 ls3 ws0">St<span class="_ _3"></span>r<span class="_ _3"></span>u<span class="_ _3"></span>t<span class="_ _3"></span>s<span class="_ _3"></span><span class="ff2 sc1 ls1e">标记库<span class="_ _2"> </span></span><span class="ls0">...............................................................................................................<span class="_ _1"></span>24 </span></div><div class="t m0 x4 h4 y26 ff2 fs0 fc0 sc0 ls0 ws0">定制<span class="ff1 ls1c">JSP</span>标记<span class="ff1 ls7">...........................................................................................................................<span class="_ _3"></span>24 </span></div><div class="t m0 x4 h4 y27 ff2 fs0 fc0 sc0 ls0 ws0">资源束<span class="ff1 ls7">...............................................................................................................................<span class="ls1f">......<span class="_ _3"></span>25 </span></span></div><div class="t m0 x4 h4 y28 ff1 fs0 fc0 sc0 ls17 ws0">Bean<span class="ff2 ls0">标记<span class="_ _2"> </span></span><span class="ls7">...............................................................................................................................<span class="ls20">.<span class="_ _3"></span>26 </span></span></div><div class="t m0 x5 h4 y29 ff1 fs0 fc0 sc0 ls17 ws0">Bean<span class="ff2 ls0">复制标记<span class="_ _6"> </span></span><span class="ls7">................................................................................................................<span class="_ _3"></span>26 </span></div><div class="t m0 x5 h4 y2a ff2 fs0 fc0 sc0 ls0 ws0">定义脚本变量的标记<span class="_ _8"></span><span class="ff1 ls7">.....................................................................................................<span class="_ _3"></span>27 </span></div><div class="t m0 x5 h4 y2b ff2 fs0 fc0 sc0 ls0 ws0">显示<span class="ff1 ls17">Bean</span><span class="ls21">属性<span class="_ _6"> </span><span class="ff1 ls7">................................................................................................................<span class="_ _3"></span>28 </span></span></div><div class="t m0 x5 h4 y2c ff2 fs0 fc0 sc0 ls0 ws0">消息标记和国际化<span class="_ _8"></span><span class="ff1 ls7">.........................................................................................................<span class="_ _3"></span>28 </span></div><div class="t m0 x1 h5 y2d ff1 fs2 fc0 sc0 ls0 ws0"> <span class="_ _c"> </span>1</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62b5986523dfab40400e8660/bg2.jpg"><div class="t m0 x4 h4 y1 ff2 fs0 fc0 sc0 ls0 ws0">逻辑标记<span class="ff1 ls7">...............................................................................................................................<span class="ls13">..<span class="_ _3"></span>29 </span></span></div><div class="t m0 x5 h4 y2e ff2 fs0 fc0 sc0 ls0 ws0">条件逻辑<span class="ff1 ls7">.........................................................................................................................<span class="_ _3"></span>29 </span></div><div class="t m0 x5 h4 y2f ff2 fs0 fc0 sc0 ls0 ws0">重复标记<span class="ff1 ls7">.........................................................................................................................<span class="_ _3"></span>31 </span></div><div class="t m0 x5 h4 y30 ff2 fs0 fc0 sc0 ls0 ws0">转发和重定向标记<span class="_ _8"></span><span class="ff1 ls7">.........................................................................................................<span class="_ _3"></span>32 </span></div><div class="t m0 x4 h4 y31 ff1 fs0 fc0 sc0 ls22 ws0">HTML<span class="ff2 ls0">标记<span class="_ _2"> </span></span><span class="ls7">.............................................................................................................................<span class="_ _8"></span>33<span class="_ _8"></span><span class="ls0"> </span></span></div><div class="t m0 x5 h4 y32 ff2 fs0 fc0 sc0 ls0 ws0">显示表单元素和输入控件<span class="_ _3"></span><span class="ff1 ls7">.............................................................................................<span class="_ _3"></span>33 </span></div><div class="t m0 x5 h4 y7 ff2 fs0 fc0 sc0 ls0 ws0">显示错误信息的标记<span class="_ _8"></span><span class="ff1 ls7">.....................................................................................................<span class="_ _3"></span>37 </span></div><div class="t m0 x5 h4 y8 ff2 fs0 fc0 sc0 ls0 ws0">其他<span class="ff1 ls22">HTML</span>标记<span class="_ _2"> </span><span class="ff1 ls7">.............................................................................................................<span class="_ _3"></span>38 </span></div><div class="t m0 x4 h4 y9 ff2 fs0 fc0 sc0 ls0 ws0">模板标记<span class="ff1 ls7">...............................................................................................................................<span class="ls13">..<span class="_ _3"></span>38 </span></span></div><div class="t m0 x1 h3 y33 ff2 fs1 fc0 sc1 lsc ws0">一个简单的示例<span class="_ _6"> </span><span class="ff3 sc0 ls0">.........................................................................................................<span class="_ _1"></span>40 </span></div><div class="t m0 x4 h4 yb ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="ff2 ls0">的安装<span class="_ _6"> </span></span><span class="ls7">...........................................................................................................................<span class="_ _3"></span>40 </span></div><div class="t m0 x4 h4 yc ff2 fs0 fc0 sc0 ls0 ws0">第一个实验:简单的<span class="ff1 ls1c">JSP</span>页<span class="_ _3"></span><span class="ff1 ls7">...................................................................................................<span class="_ _8"></span>40 </span></div><div class="t m0 x4 h4 y34 ff2 fs0 fc0 sc0 ls0 ws0">第二个实验:<span class="ff1 lse">struts</span>的国际化<span class="_ _a"> </span><span class="ff1 ls7">................................................................................................<span class="_ _3"></span>41 </span></div><div class="t m0 x4 h4 ye ff1 fs0 fc0 sc0 lse ws0">struts<span class="ff2 ls0">中的</span><span class="ls23">Forms<span class="_ _8"></span><span class="ls7">......................................................................................................................<span class="_ _3"></span>44 </span></span></div><div class="t m0 x4 h4 yf ff1 fs0 fc0 sc0 ls22 ws0">struts:<span class="ff2 ls0">介绍</span><span class="ls18">ActionForm<span class="_ _2"> </span><span class="ls7">...........................................................................................................<span class="_ _3"></span>48 </span></span></div><div class="t m0 x4 h4 y10 ff2 fs0 fc0 sc0 ls0 ws0">分离<span class="ff1 ls24">Book</span>和<span class="ff1 ls25">BookFor<span class="_ _8"></span>m</span>的一个好方法<span class="_ _3"></span><span class="ff1 ls11">...................................................................................<span class="_ _3"></span>50 </span></div><div class="t m0 x1 h2 y35 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y36 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y37 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y38 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y39 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y3a ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y3b ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y3c ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y3d ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y3e ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y3f ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y40 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y41 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y42 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y43 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y44 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y45 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y46 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y47 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y48 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y49 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y4a ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y4b ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y4c ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y4d ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y4e ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h2 y4f ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h5 y2d ff1 fs2 fc0 sc0 ls0 ws0"> <span class="_ _c"> </span>2</div><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m1"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62b5986523dfab40400e8660/bg3.jpg"><div class="t m0 x1 h6 y50 ff2 fs3 fc0 sc1 ls26 ws0">概述<span class="ff3 sc0 ls0"> </span></div><div class="t m0 x1 h4 y51 ff2 fs0 fc0 sc0 ls7 ws0"> <span class="_ _d"> </span>本文主要讲解什么是<span class="_"> </span>Struts Fr<span class="ls12">amework,它的框架结构,组件结构,以及简单的配置</span></div><div class="t m0 x1 h4 y52 ff2 fs0 fc0 sc0 ls0 ws0">讲解。 </div><div class="t m0 x4 h4 y53 ff2 fs0 fc0 sc0 ls0 ws0">文章的包括了如下七大部分: </div><div class="t m0 x4 h4 y54 ff1 fs0 fc0 sc0 ls27 ws0">Framework<span class="_"> </span><span class="ff2 ls0">的概念和体系简介<span class="ff1"> </span></span></div><div class="t m0 x4 h4 y55 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _0"> </span><span class="ff2 ls0">的概念和体系结构<span class="ff1"> </span></span></div><div class="t m0 x4 h4 y56 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _0"> </span><span class="ff2 ls0">的工作原理和组件<span class="ff1"> </span></span></div><div class="t m0 x4 h4 y57 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _0"> </span><span class="ff2 ls0">配置文件简介<span class="ff1"> </span></span></div><div class="t m0 x4 h4 y58 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _0"> </span><span class="ff2 ls0">高级特性<span class="ff1"> </span></span></div><div class="t m0 x4 h4 y59 ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _0"> </span><span class="ff2 ls0">标记库<span class="ff1"> </span></span></div><div class="t m0 x4 h4 y5a ff2 fs0 fc0 sc0 ls0 ws0">一个简单的示例<span class="ff1"> </span></div><div class="t m0 x1 h6 y5b ff3 fs3 fc0 sc0 ls28 ws0">Framework<span class="_"> </span><span class="ff2 sc1 ls26">概念</span><span class="ls0"> </span></div><div class="t m0 x4 h4 y5c ff2 fs0 fc0 sc0 ls29 ws0">一直以来我们都说<span class="_ _e"> </span>S<span class="_ _9"></span>t<span class="_ _7"></span>r<span class="_ _9"></span>u<span class="_ _9"></span>t<span class="_ _f"></span>s<span class="_ _e"> </span>是一个<span class="_ _e"> </span>W<span class="_ _9"></span>e<span class="_ _9"></span>b<span class="_ _f"></span> F<span class="_ _9"></span>r<span class="_ _f"></span>a<span class="_ _f"></span>m<span class="_ _9"></span>e<span class="_ _f"></span>w<span class="_ _f"></span>o<span class="_ _9"></span>r<span class="_ _f"></span>k。那么让我么先来看看什么是</div><div class="t m0 x1 h4 y5d ff2 fs0 fc0 sc0 ls20 ws0">Framewor<span class="_ _5"></span>k。<span class="fc1 ls0"> </span></div><div class="t m0 x4 h4 y5e ff2 fs0 fc0 sc0 ls0 ws0">Framework<span class="_ _0"> </span>概念并不是很新了,<span class="_ _f"></span>伴随着软件开发的发展,<span class="_ _7"></span>在多层的软件开发项目中,<span class="_ _7"></span>可</div><div class="t m0 x1 h4 y5f ff2 fs0 fc0 sc0 ls0 ws0">重用、<span class="_ _9"></span>易扩展的,<span class="_ _9"></span>而且是经过良好测试的软件组件,<span class="_ _9"></span>越来越为人们所青睐。<span class="_ _9"></span>这意味着人们可</div><div class="t m0 x1 h4 y60 ff2 fs0 fc0 sc0 ls0 ws0">以将充裕的时间用来分析、<span class="_ _10"></span>构建业务逻辑的应用上,<span class="_ _10"></span>而非繁杂的代码工程。<span class="_ _10"></span>于是人们将相同</div><div class="t m0 x1 h4 y61 ff2 fs0 fc0 sc0 ls2a ws0">类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的<span class="_ _0"> </span>Framework。 </div><div class="t m0 x1 h4 y62 ff2 fs0 fc0 sc0 ls2b ws0"> <span class="_ _11"> </span>F<span class="_ _7"></span>r<span class="_ _7"></span>a<span class="_ _5"></span>m<span class="_ _7"></span>e<span class="_ _7"></span>w<span class="_ _7"></span>o<span class="_ _5"></span>r<span class="_ _7"></span>k<span class="_ _e"> </span>的体系提供了一套明确机制,从而<span class="_ _5"></span>让开发人员很容易的扩展和控制整个</div><div class="t m0 x1 h4 y63 ff2 fs0 fc0 sc0 ls0 ws0">Framework<span class="_ _0"> </span>开发上的结构。 <span class="_ _b"></span><span class="ls20">通<span class="_ _a"> </span>常<span class="_ _a"> </span>,<span class="_ _a"> </span>Framework<span class="_ _12"> </span><span class="ls2c">的结构中都有一个“命令和<span class="_ _8"></span>控制”组件</span></span></div><div class="t m0 x1 h7 y64 ff2 fs0 fc0 sc0 ls0 ws0">(<span class="ff4 ls2d wsf">"command and control" component</span>)——<span class="ff4 ls2e ws10">Framework F<span class="_ _f"></span>actory and Manager<span class="ff2 ls0 ws0">。<span class="ff4"> </span></span></span></div><div class="t m0 x6 h2 y65 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x7 h4 y66 ff2 fs0 fc0 sc1 ls2f ws0">Framework<span class="_ _0"> </span>体系 </div><div class="t m0 x1 h2 y67 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h4 y68 ff1 fs0 fc0 sc0 ls0 ws0"> <span class="_ _13"> </span><span class="ff2">通过基于请求响应(</span><span class="lsd">Request-Response</span><span class="ff2">)模式的应用<span class="_"> </span></span><span class="ls2e">Framework</span><span class="ff2">,基本上有如下几个表</span></div><div class="t m0 x1 h4 y69 ff2 fs0 fc0 sc0 ls0 ws0">现逻辑结构组成。<span class="ff1"> </span></div><div class="t m0 x1 h4 y6a ff2 fs0 fc0 sc1 ls30 ws0">控制器<span class="sc0 ls0">(<span class="ff1 ls31">Controlle<span class="_ _8"></span>r</span>)——控制整个<span class="_ _0"> </span><span class="ff1 ls32">Framework<span class="_"> </span></span>中各个组件的协调工作。<span class="ff1"> </span></span></div><div class="t m0 x1 h4 y6b ff2 fs0 fc0 sc1 ls30 ws0">业务逻辑层<span class="_ _9"></span><span class="sc0 ls0">(<span class="ff1 ls23 ws11">Business Logic</span>)<span class="_ _f"></span>——对<span class="_ _0"> </span><span class="ff1 ls1d">Framwork<span class="_"> </span></span>本身来说,<span class="_ _f"></span>这里仅仅只是概念和几个提够服</span></div><div class="t m0 x1 h5 y2d ff1 fs2 fc0 sc0 ls0 ws0"> <span class="_ _c"> </span>3</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62b5986523dfab40400e8660/bg4.jpg"><div class="t m0 x1 h4 y1 ff2 fs0 fc0 sc0 ls0 ws0">务的基础组件,真正的实现与客户的业务逻辑接轨,还需要开发人员在<span class="_ _14"> </span><span class="ff1 ls2e">Framework<span class="_ _14"> </span></span>上再次</div><div class="t m0 x1 h4 y6c ff2 fs0 fc0 sc0 ls0 ws0">扩展。<span class="ff1"> </span></div><div class="t m0 x1 h4 y6d ff2 fs0 fc0 sc1 ls30 ws0">数据逻辑层<span class="sc0 ls0">(<span class="ff1 ls9 ws12">Data L<span class="_ _5"></span>ogic<span class="ff2 ls0 ws0">)——绝大应用系统都需要涉及到数据交互,这一层次主要包括了</span></span></span></div><div class="t m0 x1 h4 y6e ff2 fs0 fc0 sc0 ls0 ws0">数据逻辑和数据访问接口。<span class="_ _9"></span>对于数据逻辑来说,<span class="_ _10"></span>如果你了解数据建模<span class="_ _9"></span>(<span class="ff1 ls1b ws13">Data Modeling</span><span class="ls33">)可<span class="_ _1"></span>能</span></div><div class="t m0 x1 h4 y6f ff2 fs0 fc0 sc0 ls0 ws0">就很容易理解。<span class="ff1 ls34"> </span></div><div class="t m0 x1 h2 y70 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h6 y71 ff3 fs3 fc0 sc0 ls35 ws0">St<span class="_ _1"></span>r<span class="_ _1"></span>u<span class="_ _1"></span>t<span class="_ _a"></span>s<span class="_ _12"> </span><span class="ff2 sc1 ls26">的概念和体系结构</span><span class="ls0"> </span></div><div class="t m0 x4 h4 y72 ff2 fs0 fc0 sc0 ls32 ws0">Struts<span class="_ _0"> </span>有一组相互协作的类、Serlvet<span class="_ _0"> </span>以及<span class="_ _0"> </span>Jsp <span class="_ _15"></span>TagLib<span class="_ _0"> </span>组成。基于<span class="_ _0"> </span>Struts<span class="_ _0"> </span>构架的<span class="_ _0"> </span>web</div><div class="t m0 x1 h4 y73 ff2 fs0 fc0 sc0 ls23 ws0">应用程序基本上符合<span class="_ _0"> </span>JSP Model2<span class="_ _16"> </span>的设计标准,可以说是<span class="_ _0"> </span>MVC<span class="_ _0"> </span>设计模式的一种变化类型。根</div><div class="t m0 x1 h4 y74 ff2 fs0 fc0 sc0 ls32 ws0">据上面对<span class="_ _0"> </span>framework<span class="_ _0"> </span>的描述,我们很容易理解为什么说<span class="_ _0"> </span>Struts<span class="_ _0"> </span>是一个<span class="_ _0"> </span>web <span class="_ _15"></span>framwork,而不</div><div class="t m0 x1 h4 y75 ff2 fs0 fc0 sc0 ls0 ws0">仅仅是一些标记库的组合。<span class="_ _17"></span><span class="ls32">但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程</span></div><div class="t m0 x1 h4 y76 ff2 fs0 fc0 sc0 ls0 ws0">序类。 </div><div class="t m0 x4 h4 y77 ff2 fs0 fc0 sc0 ls36 ws0">St<span class="_ _5"></span>ru<span class="_ _7"></span>ts<span class="_"> </span>有其自己的控制器(Co<span class="_ _5"></span>n<span class="_ _5"></span>tr<span class="_ _5"></span>ol<span class="_ _7"></span>ler)<span class="_ _18"></span>,同时整合了其他的一些技术去实现模型层</div><div class="t m0 x1 h4 y78 ff2 fs0 fc0 sc0 ls7 ws0">(Model)和视图层(View)<span class="_ _18"></span><span class="ls23">。在模型层,Struts<span class="_"> </span><span class="ls12">可以很容易的与数据访问技术相结合,包</span></span></div><div class="t m0 x1 h4 y79 ff2 fs0 fc0 sc0 ls37 ws0">括<span class="_ _e"> </span>E<span class="_ _9"></span>J<span class="_ _f"></span>B<span class="_ _f"></span>,<span class="_ _f"></span>J<span class="_ _9"></span>D<span class="_ _f"></span>B<span class="_ _f"></span>C<span class="_ _e"> </span>和<span class="_ _e"> </span>O<span class="_ _9"></span>b<span class="_ _f"></span>j<span class="_ _f"></span>e<span class="_ _f"></span>c<span class="_ _9"></span>t<span class="_ _f"></span> R<span class="_ _f"></span>e<span class="_ _f"></span>l<span class="_ _f"></span>a<span class="_ _f"></span>t<span class="_ _9"></span>i<span class="_ _f"></span>o<span class="_ _f"></span>n<span class="_ _f"></span> B<span class="_ _f"></span>r<span class="_ _9"></span>i<span class="_ _f"></span>d<span class="_ _f"></span>g<span class="_ _f"></span>e。在视图层,S<span class="_ _f"></span>t<span class="_ _9"></span>r<span class="_ _f"></span>u<span class="_ _f"></span>t<span class="_ _f"></span>s<span class="_ _e"> </span>能够与<span class="_ _14"> </span>J<span class="_ _f"></span>S<span class="_ _f"></span>P<span class="_ _f"></span>,<span class="_ _f"></span> V<span class="_ _f"></span>e<span class="_ _f"></span>l<span class="_ _9"></span>o<span class="_ _f"></span>c<span class="_ _f"></span>i<span class="_ _f"></span>t<span class="_ _f"></span>y<span class="_ _f"></span> </div><div class="t m0 x1 h4 y7a ff2 fs0 fc0 sc0 ls0 ws0">Templates,XSL<span class="_ _0"> </span>等等这些表示层组件想结合。 </div><div class="t m0 x1 h8 y7b ff5 fs4 fc0 sc0 ls38 ws0">St<span class="_ _8"></span>r<span class="_ _8"></span>u<span class="_ _8"></span>ts<span class="_"> </span><span class="ff6 sc1 ls39">的与<span class="_ _19"> </span></span><span class="ls3a ws14">Web<span class="_ _8"></span> A<span class="_ _8"></span>p<span class="_ _8"></span>p<span class="_ _1a"> </span></span><span class="ff6 sc1 ls39">的关系</span><span class="ls0"> </span></div><div class="t m0 x4 h4 y7c ff2 fs0 fc0 sc0 lse ws0">既然<span class="_ _1b"> </span>struts<span class="_ _1b"> </span>叫做<span class="_ _1b"> </span>web fra<span class="ls23">mework,那么其肯定主要基于<span class="_ _16"> </span>web<span class="_ _1b"> </span>层的应用系统开发。按照</span></div><div class="t m0 x1 h4 y7d ff2 fs0 fc0 sc0 ls20 ws0">J2EE <span class="_ _b"></span><span class="ls3b">Architecture<span class="_ _16"> </span>的标准,<span class="_ _15"></span>struts<span class="_ _0"> </span>应当和<span class="_ _0"> </span>jsp/serv<span class="_ _8"></span>let<span class="_ _0"> </span>一样,<span class="_ _15"></span>存在于<span class="_ _0"> </span>web <span class="_ _b"></span><span class="ls3c">cont<span class="_ _8"></span>ainer<span class="_ _0"> </span>一层。<span class="_ _1c"></span><span class="ls0"> </span></span></span></div><div class="t m0 x8 h4 y7e ff2 fs0 fc0 sc1 ls3d ws0">Struts<span class="_ _0"> </span>与<span class="_ _0"> </span>WebApp<span class="_ _0"> </span>的关系 </div><div class="t m0 x1 h4 y7f ff2 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x1 h8 y80 ff5 fs4 fc0 sc0 ls38 ws0">St<span class="_ _8"></span>r<span class="_ _8"></span>u<span class="_ _8"></span>ts<span class="_"> </span><span class="ff6 sc1 ls3e">的体系结构</span><span class="ls0"> </span></div><div class="t m0 x1 h4 y81 ff2 fs0 fc0 sc0 ls32 ws0"> <span class="_ _d"> </span>我们说<span class="_ _0"> </span>struts <span class="_ _15"></span>framework<span class="_ _0"> </span>是<span class="_ _0"> </span>MVC 模式的体现,下面我们就从分别从模型、视图、控制</div><div class="t m0 x1 h5 y2d ff1 fs2 fc0 sc0 ls0 ws0"> <span class="_ _c"> </span>4</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62b5986523dfab40400e8660/bg5.jpg"><div class="t m0 x1 h4 y1 ff2 fs0 fc0 sc0 ls2a ws0">来看看<span class="_ _0"> </span>struts<span class="_ _16"> </span>的体系结构(Architecture)<span class="_ _18"></span><span class="ls15">。下图显示了<span class="_ _0"> </span>struts framework<span class="_ _16"> </span>的体系结构响</span></div><div class="t m0 x1 h4 y6c ff2 fs0 fc0 sc0 ls0 ws0">应客户请求时候,各个部分工作的原理。 </div><div class="t m0 x9 h4 y82 ff2 fs0 fc0 sc1 ls3d ws0">Struts<span class="_ _0"> </span>体系结构 </div><div class="t m0 x1 h9 y83 ff3 fs4 fc0 sc0 ls0 ws0"> <span class="_ _1d"> </span><span class="ff2 sc1 ls3f">从视图角度(</span><span class="ls40">Vi<span class="_ _3"></span>e<span class="_ _3"></span>w<span class="_ _3"></span></span><span class="ff2 sc1">)</span> </div><div class="t m0 xa h4 y84 ff2 fs0 fc0 sc0 ls0 ws0">首先,<span class="_ _15"></span><span class="ff1 ls5">St<span class="_ _8"></span>ru<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _0"> </span><span class="ff2 ls0">提供了<span class="_ _0"> </span></span><span class="ls41">Java<span class="_"> </span><span class="ff2 ls0">类<span class="_ _0"> </span></span><span class="ls1a ws15">org. apache.struts.<span class="_ _5"></span>action.Actio<span class="_ _5"></span>nForm<span class="ff2 ls0 ws0">,<span class="_ _15"></span><span class="ff1 ls17">Java<span class="_"> </span><span class="ff2 ls0">开发者将该类细</span></span></span></span></span></span></div><div class="t m0 xa h4 y85 ff2 fs0 fc0 sc0 ls0 ws0">分来创建表单<span class="_ _0"> </span><span class="ff1 ls42">bean</span>。在运行时,该<span class="_ _6"> </span><span class="ff1 ls43">bean<span class="_"> </span></span>有两种用法:<span class="ff1"> </span></div><div class="t m0 xb ha y86 ff7 fs0 fc0 sc0 ls0 ws0">―<span class="ff1 ls44"> </span><span class="ff2">当<span class="_ _0"> </span><span class="ff1 ls1c">JSP<span class="_"> </span></span>准备相关的<span class="_ _0"> </span><span class="ff1 ls22">HTML</span>,表单以进行显示时,<span class="ff1 ls1c">JSP<span class="_"> </span></span>将访问该<span class="ff1"> </span></span></div><div class="t m0 xc h4 y87 ff1 fs0 fc0 sc0 ls42 ws0">bean(<span class="ff2 ls0">它保存要放入表单中的值<span class="ff1">)</span>。<span class="_ _1e"></span>那些值是从业务逻辑或者是从先前的用户</span></div><div class="t m0 xc h4 y88 ff2 fs0 fc0 sc0 ls0 ws0">输入来提供的。<span class="ff1"> </span></div><div class="t m0 x1 ha y89 ff1 fs0 fc0 sc0 ls44 ws0"> <span class="_ _5"></span> <span class="ff7 ls0">―</span> <span class="ff2 ls0">当从<span class="_ _0"> </span></span><span class="ls6">We<span class="_ _3"></span>b<span class="_ _1f"> </span><span class="ff2 ls0">浏览器中返回用户输入时,<span class="_ _10"></span>该<span class="_ _0"> </span><span class="ff1 ls42">bean<span class="_"> </span></span>将验证并保存该输入以供业务</span></span></div><div class="t m0 xd h4 y8a ff2 fs0 fc0 sc0 ls0 ws0">逻辑或<span class="ff1">(</span>如果验证失败的话<span class="ff1">)</span>后续重新显示使用。<span class="ff1"> </span></div><div class="t m0 xa h4 y8b ff2 fs0 fc0 sc0 ls0 ws0">其次,<span class="ff1 ls5">Str<span class="_ _8"></span>u<span class="_ _8"></span>ts<span class="_ _16"> </span></span>提供了许多定制<span class="_ _0"> </span><span class="ff1 ls1c">JSP<span class="_"> </span></span>标记,它们的使用简单,但是它们在隐藏信息方面</div><div class="t m0 xa h4 y8c ff2 fs0 fc0 sc0 ls0 ws0">功能强大。<span class="_ _f"></span>例如,<span class="_ _7"></span>除了<span class="_ _0"> </span><span class="ff1 ls43">bean<span class="_"> </span></span>名称和给定<span class="_ _0"> </span><span class="ff1 ls42">bean<span class="_"> </span></span>中每个段的名称之外,<span class="_ _9"></span>页面设计者不需</div><div class="t m0 xa h4 y8d ff2 fs0 fc0 sc0 ls0 ws0">要知道有关表单<span class="_ _0"> </span><span class="ff1 ls42">bean<span class="_"> </span></span>的更多信息。<span class="ff1"> </span></div><div class="t m0 x1 h9 y8e ff2 fs4 fc0 sc1 ls3f ws0">从模型角度(<span class="ff3 sc0 ls45">Model</span><span class="ls0">)<span class="ff3 sc0"> </span></span></div><div class="t m0 x4 h4 y8f ff1 fs0 fc0 sc0 ls5 ws0">Str<span class="_ _8"></span>u<span class="_ _8"></span>t<span class="_ _8"></span>s<span class="_ _1b"> </span><span class="ff2 ls2e">虽然不直接有助于模型开发。在<span class="_ _1b"> </span>Struts<span class="_ _1b"> </span>中,系统模型的状态主要由<span class="_ _1b"> </span>ActiomForm </span></div><div class="t m0 x1 h4 y90 ff2 fs0 fc0 sc0 ls23 ws0">Bean<span class="_ _0"> </span>和值对象体现。 </div><div class="t m0 x1 h9 y91 ff2 fs4 fc0 sc1 ls46 ws0">从控制器角度(<span class="ff3 sc0 ls47">Contr<span class="_ _5"></span>oller<span class="ff2 sc1 ls0">)</span><span class="ls0"> </span></span></div><div class="t m0 x1 h4 y92 ff2 fs0 fc0 sc0 ls48 ws0"> <span class="_ _d"> </span>在<span class="_ _0"> </span>Struts <span class="_ _b"></span>framework<span class="_ _0"> </span>中,<span class="_ _f"></span> Contr<span class="ls32">oller<span class="_ _0"> </span>主要是<span class="_ _0"> </span>ActionServlet,<span class="_ _9"></span>但是对于业务逻辑的操</span></div><div class="t m0 x1 h4 y93 ff2 fs0 fc0 sc0 ls48 ws0">作则主要由<span class="_ _0"> </span>Action、ActionMapping<span class="_ _8"></span>、ActionForward<span class="_ _0"> </span>这几个组件协调完成(也许这几个组</div><div class="t m0 x1 h4 y94 ff2 fs0 fc0 sc0 ls0 ws0">件,应该划分到模型中的业务逻辑一块)<span class="_ _18"></span><span class="ls2a">。其中,Action<span class="_ _0"> </span>扮演了真正的控制逻辑的实现者,</span></div><div class="t m0 x1 h4 y95 ff2 fs0 fc0 sc0 ls49 ws0">而<span class="_ _0"> </span>ActionMapping<span class="_ _0"> </span>和<span class="_ _0"> </span>Ac<span class="ls24">tionForward<span class="_ _0"> </span>则指定了不同业务逻辑或流程的运行方向。 </span></div><div class="t m0 x1 h8 y96 ff5 fs4 fc0 sc0 ls38 ws0">St<span class="_ _8"></span>r<span class="_ _8"></span>u<span class="_ _8"></span>ts<span class="_"> </span><span class="ff6 sc1 ls3f">的基本组件包</span><span class="ls0"> </span></div><div class="t m0 x4 h4 y97 ff2 fs0 fc0 sc0 ls2d ws0">整个<span class="_ _0"> </span>struts<span class="_ _0"> </span>大约有<span class="_ _0"> </span>15<span class="_ _0"> </span>包,<span class="_ _10"></span>近<span class="_ _0"> </span>200<span class="_ _0"> </span>个类所组成,<span class="_ _10"></span>而且数量还在不断的扩展。<span class="_ _10"></span>在此我们不</div><div class="t m0 x1 h5 y2d ff1 fs2 fc0 sc0 ls0 ws0"> <span class="_ _c"> </span>5</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>