📄 csdn_文档中心_struts快速学习指南3(内部培训教材)-大部分素材来自于《programming jakarta struts》一书.htm
字号:
2的构架图,也是Struts的构架图,Struts使用一个Servlet作为Controller,处理用户的请求,并分派给Model进行业务处理,在合适的时候将合适的View推向给用户。这个Servlet是</SPAN></FONT></FONT><TT><SPAN
lang=EN-GB style="FONT-SIZE: 11.5pt; mso-ansi-language: EN-GB"><FONT
color=#354278>org.apache.struts.action.ActionServlet</FONT></SPAN></TT><FONT
face=宋体 size=2>或其子类。</FONT><FONT color=#354278><TT><SPAN lang=EN-GB
style="FONT-SIZE: 11.5pt; mso-ansi-language: EN-GB">A</SPAN></TT><TT><SPAN
lang=EN-GB
style="FONT-SIZE: 12pt; mso-ansi-language: EN-GB">ctionServlet</SPAN></TT></FONT><FONT
face=宋体 size=2>类扩展自</FONT><TT><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; mso-ansi-language: EN-GB"><FONT
color=#354278>javax.servlet.http.HttpServlet</FONT></SPAN></TT><FONT
size=2><FONT face=宋体>类,其职责是将<SPAN
lang=EN-US>http请求提交给合适的处理器(</SPAN></FONT></FONT><TT><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; mso-ansi-language: EN-GB"><FONT
color=#354278>Processor</FONT></SPAN></TT><SPAN lang=EN-US><FONT
face=宋体 size=2>)进行处理。关于处理器我们在稍后会介绍,是o</FONT></SPAN><TT><SPAN
lang=EN-GB style="FONT-SIZE: 12pt; mso-ansi-language: EN-GB"><FONT
color=#354278>rg.apache.struts.action.RequestProcessor
</FONT></SPAN></TT><FONT face=宋体 size=2>或其子类的一个实例。</FONT></P>
<H4 style="MARGIN: 6pt 0cm 3pt; TEXT-INDENT: 0cm"><A
name=_Toc69400237></A><A name=_Toc69320854><SPAN
style="mso-bookmark: _Toc69400237"><SPAN lang=EN-US
style="mso-bidi-font-family: 宋体"><SPAN
style="mso-list: Ignore"><FONT face=宋体 size=2>1.3.1.1</FONT><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=宋体
size=2>Controller(控制器)机制</FONT></SPAN></SPAN></A></H4>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18.9pt; mso-char-indent-count: 1.89"><FONT
size=2><FONT face=宋体><SPAN lang=EN-US>J2EE的</SPAN><SPAN
style="mso-ansi-language: DA">前端控制器<SPAN lang=DA>(Front
Controller)</SPAN>设计模式中利用一个前端控制器来接受所有客户请求,为应用提供一个中心控制点,在该控制点上,可以很方便地添加一些全局性的,如加密、国际化、日志等通用操作。<SPAN
lang=DA>Controller</SPAN>的实现机制正是建立在前端控制器的设计模式基础上。</SPAN><SPAN
lang=EN-US><o:p></o:p></SPAN></FONT></FONT></P>
<P class=doctext
style="MARGIN: auto 0cm; TEXT-INDENT: 17.1pt; mso-char-indent-count: 1.71"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">前面我们介绍过,</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">Struts</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的控制器拥有一些职责,其中最主要的是以下几个:</SPAN><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA">
<o:p></o:p></SPAN></P>
<P class=doclist
style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt"><SPAN lang=DA
style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-ansi-language: DA">?/SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">
</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">接收客户请求。</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA"><o:p></o:p></SPAN></P>
<P class=doclist
style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt"><SPAN lang=DA
style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-ansi-language: DA">?/SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">
</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">映射请求到指定的业务操作。</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA"><o:p></o:p></SPAN></P>
<P class=doclist
style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt"><SPAN lang=DA
style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-ansi-language: DA">?/SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">
</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">获取业务操作的结果并以有效的方式提供给客户。</SPAN><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA">
<o:p></o:p></SPAN></P>
<P class=doclist
style="MARGIN: auto 0cm auto 36pt; TEXT-INDENT: -18pt"><SPAN lang=DA
style="FONT-SIZE: 10pt; FONT-FAMILY: Symbol; mso-ansi-language: DA">?/SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">
</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">根据业务操作的结果和当前的状态把不同的</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">UI</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">推向给客户。</SPAN><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA">
<o:p></o:p></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt; mso-char-indent-count: 1.8"><SPAN
style="mso-ansi-language: DA"><FONT size=2><FONT face=宋体>在<SPAN
lang=DA>Struts</SPAN>框架中,控制器中不同的组件负责不同的控制职责,下图是<SPAN
lang=DA>Struts</SPAN>框架中关于控制器部分的一个组件图:<SPAN
lang=DA><o:p></o:p></SPAN></FONT></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 18pt; mso-char-indent-count: 1.8"><SPAN
lang=DA style="mso-ansi-language: DA"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 36pt"><SPAN
style="mso-ansi-language: DA"><FONT face=宋体 size=2><IMG alt=""
hspace=0
src="CSDN_文档中心_Struts快速学习指南3(内部培训教材)-大部分素材来自于《Programming Jakarta Struts》一书.files/CSDN_Dev_Image_2004-4-212305218.jpg"
align=baseline border=0>在上图中,很明显地可以看出,</FONT></SPAN><TT><SPAN
lang=EN-GB style="FONT-SIZE: 12pt; mso-ansi-language: EN-GB"><FONT
color=#354278>ActionServlet</FONT></SPAN></TT><SPAN
style="mso-ansi-language: DA"><FONT face=宋体
size=2>处于核心位置,那么,我们就先来了解一下</FONT></SPAN><TT><SPAN lang=EN-GB
style="FONT-SIZE: 12pt; mso-ansi-language: EN-GB"><FONT
color=#354278>ActionServlet</FONT></SPAN></TT><SPAN
style="mso-ansi-language: DA"><FONT size=2><FONT face=宋体>。<SPAN
lang=DA><o:p></o:p></SPAN></FONT></FONT></SPAN></P>
<H4 style="MARGIN: 6pt 0cm 3pt; TEXT-INDENT: 0cm"><A
name=_Toc69400238></A><A name=_Toc69320855><SPAN
style="mso-bookmark: _Toc69400238"><SPAN lang=EN-US
style="mso-bidi-font-family: 宋体"><SPAN
style="mso-list: Ignore"><FONT face=宋体 size=2>1.3.1.2</FONT><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></SPAN></SPAN><SPAN lang=EN-US><FONT face=宋体
size=2>ActionServlet类</FONT></SPAN></SPAN></A></H4>
<P class=doctext
style="MARGIN: auto 0cm; TEXT-INDENT: 18pt; mso-char-indent-count: 1.8"><TT><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA"><FONT
color=#354278>org.apache.struts.action.ActionServlet</FONT></SPAN></TT><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">在</SPAN><SPAN
lang=EN-US style="FONT-SIZE: 10pt">Struts</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">应用程序中扮演接收器的角色,所有客户端的请求在被其它类处理之前都得通过</SPAN><TT><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA"><FONT
color=#354278>ActionServlet</FONT></SPAN></TT><SPAN lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA"> </SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的控制。</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA"><o:p></o:p></SPAN></P>
<P class=doctext
style="MARGIN: auto 0cm; TEXT-INDENT: 18pt; mso-char-indent-count: 1.8"><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">当</SPAN><SPAN
style="FONT-SIZE: 10pt; mso-ansi-language: DA"> </SPAN><TT><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA"><FONT
color=#354278>ActionServlet</FONT></SPAN></TT><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的实例接收到一个</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">HTTP</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">请求,不管是通过</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">get</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方法或</SPAN><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA">post</SPAN><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">方法,</SPAN><TT><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA"><FONT
color=#354278>ActionServlet</FONT></SPAN></TT><SPAN
style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">的</SPAN><TT><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA"><FONT
color=#354278>process( )</FONT></SPAN></TT><TT><SPAN
style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'">方法被调用并用以处理客户请求。</SPAN></TT><TT><SPAN
lang=DA style="FONT-SIZE: 10pt; mso-ansi-language: DA"><FONT
color=#354278>process( )</FONT></SPAN></TT><TT><SPAN
style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: 宋体; mso-ansi-language: DA; mso-hansi-font-family: 'Courier New'; mso-ascii-font-family: 'Courier New'">方法实现显示如下:</SPAN></TT><TT><SPAN
lang=DA
style="FONT-SIZE: 10pt; mso-ansi-language: DA"><o:p></o:p></SPAN></TT></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 15.6pt; LINE-HEIGHT: normal; mso-char-indent-count: 1.56; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-pagination: widow-orphan"><SPAN
lang=DA
style="LAYOUT-GRID-MODE: both; COLOR: #354278; FONT-FAMILY: 'Courier New'; mso-ansi-language: DA"><FONT
size=2>protected void process(HttpServletRequest
request,HttpServletResponse response)<o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 15.6pt; LINE-HEIGHT: normal; mso-char-indent-count: 1.56; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-pagination: widow-orphan"><SPAN
lang=DA
style="LAYOUT-GRID-MODE: both; COLOR: #354278; FONT-FAMILY: 'Courier New'; mso-ansi-language: DA"><FONT
size=2> throws IOException, ServletException <B
style="mso-bidi-font-weight: normal">{<o:p></o:p></B></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 15.6pt; LINE-HEIGHT: normal; mso-char-indent-count: 1.56; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-pagination: widow-orphan"><SPAN
lang=DA
style="LAYOUT-GRID-MODE: both; COLOR: #354278; FONT-FAMILY: 'Courier New'; mso-ansi-language: DA"><FONT
size=2> <o:p></o:p></FONT></SPAN></P>
<P class=MsoNormal
style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 15.6pt; LINE-HEIGHT: normal; mso-char-indent-count: 1.56; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt; mso-pagination: widow-orphan"><SPAN
lang=DA
style="LAYOUT-GRID-MODE: both; COLOR: #354278; FONT-FAMILY: 'Courier New'; mso-ansi-language: DA"><FONT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -