⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struts 2_0的action讲解 - max on java - blogjava.htm

📁 struts2标签的详细解释说明教程
💻 HTM
📖 第 1 页 / 共 5 页
字号:
style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">action 
</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN 
style="COLOR: #0000ff">="AliasHelloWorld"</SPAN><SPAN style="COLOR: #ff0000"> 
class</SPAN><SPAN style="COLOR: #0000ff">="tutorial.HelloWorld"</SPAN><SPAN 
style="COLOR: #ff0000"> method</SPAN><SPAN 
style="COLOR: #0000ff">="aliasAction"</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp; 
&nbsp;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN 
style="COLOR: #800000">result</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000">/HelloWorld.jsp</SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN 
style="COLOR: #800000">result</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN 
style="COLOR: #800000">action</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN></DIV><SPAN 
style="FONT-SIZE: smaller; FONT-STYLE: italic">例2 
classes/struts.xml中AlaisHelloWorld Action的配置</SPAN><BR><BR>实现方法二,使用<A 
href="http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action">http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action</A>地址来访问HelloWorld 
Action。 
<P>在浏览器地址栏中键入<A 
href="http://localhost:8080/Struts2_Action/AliasHelloWorld.action">http://localhost:8080/Struts2_Action/AliasHelloWorld.action</A>或 
<A 
href="http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action">http://localhost:8080/Struts2_Action/HelloWorld!aliasAction.action</A>,可以看到如图2所示页面。</P><IMG 
alt="图2 自定义Action调用方法页面" 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/r_img_2.gif"><BR><SPAN 
style="FONT-SIZE: smaller; FONT-STYLE: italic">图2 自定义Action调用方法页面</SPAN>
<P>通过上面的两个例子,细心的朋友应该可能会发现classes/tutorial/HelloWorld.java中Action方法(execute和aliasAction)返回都是SUCCESS。这个属性变量我并没有定义,所以大家应该会猜到它在ActionSupport或其父类中定义。没错,SUCCESS在接口com.opensymphony.xwork2.Action中定义,另外同时定义的还有<A 
href="http://www.blogjava.net/max/archive/com/opensymphony/xwork/Action.html#ERROR"><SPAN 
style="FONT-FAMILY: Courier New">ERROR</SPAN></A><SPAN 
style="FONT-FAMILY: Courier New">, </SPAN><A 
href="http://www.blogjava.net/max/archive/com/opensymphony/xwork/Action.html#INPUT"><SPAN 
style="FONT-FAMILY: Courier New">INPUT</SPAN></A><SPAN 
style="FONT-FAMILY: Courier New">, </SPAN><A 
href="http://www.blogjava.net/max/archive/com/opensymphony/xwork/Action.html#LOGIN"><SPAN 
style="FONT-FAMILY: Courier New">LOGIN</SPAN></A><SPAN 
style="FONT-FAMILY: Courier New">, </SPAN><A 
href="http://www.blogjava.net/max/archive/com/opensymphony/xwork/Action.html#NONE"><SPAN 
style="FONT-FAMILY: Courier New">NONE</SPAN></A>。</P>
<P>此外,我在配置Action时都没有为result定义名字(name),所以它们默认都为success。值得一提的是Struts 
2.0中的result不仅仅是Struts 
1.x中forward的别名,它可以实现除forward外的很激动人心的功能,如将Action输出到FreeMaker模板、Velocity模板、JasperReports和使用XSL转换等。这些都过result里的type(类型)属性(Attribute)定义的。另外,您还可以自定义result类型。</P>下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示:<BR>
<DIV 
style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN 
style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">action 
</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN 
style="COLOR: #0000ff">="VMHelloWorld"</SPAN><SPAN style="COLOR: #ff0000"> 
class</SPAN><SPAN style="COLOR: #0000ff">="tutorial.HelloWorld"</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp; &nbsp; 
</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN 
style="COLOR: #800000">result </SPAN><SPAN 
style="COLOR: #ff0000">type</SPAN><SPAN 
style="COLOR: #0000ff">="velocity"</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000">/HelloWorld.vm</SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN 
style="COLOR: #800000">result</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN 
style="COLOR: #800000">action</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN></DIV><SPAN 
style="FONT-SIZE: smaller; FONT-STYLE: italic">例3 
classes/struts.xml中VMHelloWorld 
Action的配置</SPAN><BR><BR>新建HelloWorld.vm,内容如下所示:<BR>
<DIV 
style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN 
style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">html</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp; 
</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN 
style="COLOR: #800000">head</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000"><BR>&nbsp; &nbsp; </SPAN><SPAN 
style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">title</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000">Velocity</SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN 
style="COLOR: #800000">title</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000"><BR>&nbsp; &nbsp; </SPAN><SPAN 
style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">meta </SPAN><SPAN 
style="COLOR: #ff0000">http-equiv</SPAN><SPAN 
style="COLOR: #0000ff">="content-type"</SPAN><SPAN style="COLOR: #ff0000"> 
content</SPAN><SPAN style="COLOR: #0000ff">="text/html; 
charset=UTF-8"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000"><BR>&nbsp; </SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">head</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR>&nbsp; 
</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN 
style="COLOR: #800000">body</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000"><BR>&nbsp; &nbsp; </SPAN><SPAN 
style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">h2</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">Message rendered 
in Velocity: $message</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN 
style="COLOR: #800000">h2</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN 
style="COLOR: #000000"><BR>&nbsp; </SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">body</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN 
style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">html</SPAN><SPAN 
style="COLOR: #0000ff">&gt;</SPAN></DIV><SPAN 
style="FONT-SIZE: smaller; FONT-STYLE: italic">例3 HelloWorld.vm</SPAN><BR>
<P>在浏览器地址栏中键入<A 
href="http://localhost:8080/Struts2_Action/VMHelloWorld.action">http://localhost:8080/Struts2_Action/VMHelloWorld.action</A>,页面输出如下图3所示。</P><IMG 
alt="图3 HelloWorld.vm的输出页面" 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/r_img_3.gif"><BR><SPAN 
style="FONT-SIZE: smaller; FONT-STYLE: italic">图3 HelloWorld.vm的输出页面</SPAN>
<CENTER>
<TABLE 
style="BORDER-RIGHT: #f0c000 1px solid; BORDER-TOP: #f0c000 1px solid; BORDER-LEFT: #f0c000 1px solid; BORDER-BOTTOM: #f0c000 1px solid; BACKGROUND-COLOR: #ffffce; TEXT-ALIGN: left" 
cellSpacing=0 cellPadding=0 border=0>
  <TBODY>
  <TR>
    <TD 
    style="PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; PADDING-TOP: 4px"><IMG 
      src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/lightbulb_on.gif"></TD>
    <TD 
    style="PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; PADDING-TOP: 4px; FONT-FAMILY: 华文仿宋">要运行例3需要在WEB-INF/lib中添加以下几个包: 

      <UL>
        <LI><A 
        href="http://jakarta.apache.org/site/downloads/downloads_commons-collections.cgi">commons-collections-3.2.jar</A>
        <LI><A 
        href="http://jakarta.apache.org/site/downloads/downloads_velocity.cgi">velocity-1.4.jar</A>
        <LI><A 
        href="http://jakarta.apache.org/site/downloads/downloads_velocity.cgi">velocity-tools-view-1.2.jar</A>
        <LI><A 
        href="http://excalibur.apache.org/download.cgi">avalon-logkit-2.1.jar</A></LI></UL></TD></TR></TBODY></TABLE></CENTER>
<P>前面,我花了不少的时间讨论Action的输出。我老板有句名言——程序无非就是输入、操作和输出。因此,现在我们要讨论一下输入——表单输入。</P>
<P>使用Struts 
2.0,表单数据的输入将变得非常方便,和普通的POJO一样在Action编写Getter和Setter,然后在JSP的UI标志的name与其对应,在提交表单到Action时,我们就可以取得其值。</P>
<P>让我们看一个例子,新建Login 
Action,它通过Login.jsp的表单获得用户名和密码,验查用户名是否为“max”,密码是否则为“secret”。如果,两者都符合,就在HelloWorld中显示“Welcome, 
max”,否则显示“Invalid user or Password”。</P>
<DIV 
style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/None.gif" 
align=top><SPAN style="COLOR: #0000ff">package</SPAN><SPAN 
style="COLOR: #000000"> tutorial;<BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/None.gif" 
align=top><BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/None.gif" 
align=top></SPAN><SPAN style="COLOR: #0000ff">import</SPAN><SPAN 
style="COLOR: #000000"> com.opensymphony.xwork2.ActionSupport;<BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/None.gif" 
align=top><BR><IMG id=Codehighlighter1_107_680_Open_Image 
onclick="this.style.display='none'; Codehighlighter1_107_680_Open_Text.style.display='none'; Codehighlighter1_107_680_Closed_Image.style.display='inline'; Codehighlighter1_107_680_Closed_Text.style.display='inline';" 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/ExpandedBlockStart.gif" 
align=top><IMG id=Codehighlighter1_107_680_Closed_Image style="DISPLAY: none" 
onclick="this.style.display='none'; Codehighlighter1_107_680_Closed_Text.style.display='none'; Codehighlighter1_107_680_Open_Image.style.display='inline'; Codehighlighter1_107_680_Open_Text.style.display='inline';" 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/ContractedBlock.gif" 
align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN 
style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN 
style="COLOR: #000000"> Login </SPAN><SPAN 
style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000"> ActionSupport 
</SPAN><SPAN id=Codehighlighter1_107_680_Closed_Text 
style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/dot.gif"></SPAN><SPAN 
id=Codehighlighter1_107_680_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/InBlock.gif" align=top> 
&nbsp; &nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN 
style="COLOR: #000000"> String name;<BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/InBlock.gif" align=top> 
&nbsp; &nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN 
style="COLOR: #000000"> String password;<BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/InBlock.gif" align=top> 
&nbsp; &nbsp;</SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN 
style="COLOR: #000000"> String message;<BR><IMG 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/InBlock.gif" align=top> 
&nbsp; &nbsp;<BR><IMG id=Codehighlighter1_209_227_Open_Image 
onclick="this.style.display='none'; Codehighlighter1_209_227_Open_Text.style.display='none'; Codehighlighter1_209_227_Closed_Image.style.display='inline'; Codehighlighter1_209_227_Closed_Text.style.display='inline';" 
src="Struts 2_0的Action讲解 - Max On Java - BlogJava.files/ExpandedSubBlockStart.gif" 
align=top><IMG id=Codehighlighter1_209_227_Closed_Image style="DISPLAY: none" 
onclick="this.style.display='none'; Codehighlighter1_209_227_Closed_Text.style.display='none'; Codehighlighter1_209_227_Open_Image.style.display='inline'; Codehighlighter1_209_227_Open_Text.style.display='inline';" 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -