??xml version="1.0" encoding="utf-8" standalone="yes"?>
1.dispatcher方式Q?br />
q种方式是struts2中默认的转发cdQ即内部h转发Q类gforward的方式。这里不专门介绍?br />
2.redirect方式Q?br />
首先看一下以下的配置代码片段Q?br />
2 <result type="redirect">/add.jsp</result>
3 </action>
3.redirectAction方式Q?br />
q种方式可以单的理解成{向到另一个Action。这U配|往往在下面的情况下需要用刎ͼ(x)例如Q当理员添加完一个用户后Q系l自动蟩转到用户列表的界面。那么我们进行如下配|:(x)
2 <result type="redirectAction">listAction</result>
3 </action>
2 <param name="actionName">XXX</param>
3 <param name="namespace">YYY</param>
4 </result>
4.plainText方式
q种方式一般来说用的比较?yu),可能用到的情况?x)原样输出源代码。配|如下:(x)
2 <result type="plainText">
3 <param name="location">/index.jsp</param>
4 <param name="charSet">UTF-8</param>
5 </result>
6 </action>
]]><package name="hello" namespace="/action" extends="struts-default">
2 <action name="helloworld">
3 <result>/WEB-INF/page/hello.jsp</result>
4 </action>
5</package>
public class HelloWorldAction {
2 private String msg;
3
4 public String getMessage() {
5 return msg;
6 }
7
8 public String execute(){
9 msg = "我的W一个struts2应用";
10 return "success";
11 }
12}
3.ActionSupportcM有一个execute()Ҏ(gu)Q它q回一个常量SUCCESSQ而该帔R的gؓ(f)"success"?br />
4.如果没有为result讄name属性,默认为success?br />
知道以上内容Q则不难理解Z么即使省略了很多属性的配置Q依然能够访问到该Action了?
]]><package name="hello" namespace="/action" extends="struts-default">
2 <action name="helloworld" class="com.xiaobai.struts.action.HelloWorldAction" method="execute">
3 <result name="success">/WEB-INF/page/hello.jsp</result>
4 </action>
5</package>
1.struts2首先搜烦命名I间?action/sdf/dsf/32/d的包是否存在Q存在的情况下,是否有helloworldq个ActionQ?br />
2.搜烦命名I间?action/sdf/dsf/32的包是否存在Q存在的情况下,是否有helloworldq个ActionQ?br />
3.搜烦命名I间?action/sdf/dsf的包是否存在Q存在的情况下,是否有helloworldq个ActionQ?br />
4.搜烦命名I间?action/sdf的包是否存在Q存在的情况下,是否有helloworldq个ActionQ?br />
5.搜烦命名I间?action的包是否存在。在q种情况下能够搜索到Q因此,可以讉K到helloworldq个Action?br />
此外Q如果按照这U搜索顺序搜索,发现所有的包均不存在,那么struts2则会(x)到命名空间ؓ(f)""Q默认命名空_(d)的包下面Lhelloworldq个Action?
]]>
2.加入struts2的相关jar文gQ将struts.xml文g拯qsrc目录下。将修改q的web.xml文g拯至struts2/WebRoot/WEB-INF/下?br />
3.新徏一个ActionQHelloWorldAction。其代码如下Q?/p>
package com.xiaobai.struts.action;
2
3public class HelloWorldAction {
4 private String msg;
5
6 public String getMessage() {
7 return msg;
8 }
9
10 public String execute(){
11 msg = "我的W一个struts2应用";
12 return "success";
13 }
14}
<package name="hello" namespace="/action" extends="struts-default">
2 <action name="helloworld" class="com.xiaobai.struts.action.HelloWorldAction" method="execute">
3 <result name="success">/WEB-INF/page/hello.jsp</result>
4 </action>
5</package>
5.部v该项目。ƈ且启动Tomcat服务器,讉Khttp://localhost:8080/struts2/action/helloworld
看到如下图所C的l果Q?br />
下面对写的代码及配置做一点解释:(x)
1.<package>标签的namespace属性可以作为action讉K路径的一部分。不讄该属性或其讄?"Q空字符Ԍ则ؓ(f)默认命名I间。例如上面的package属性设|ؓ(f)"/action"Qaction标签的name属性设|ؓ(f)"helloworld"Q所以访问该action的\径应?action/helloworldQ这也就是上面这个应用的讉K地址?a href="http://localhost:8080/struts2/action/helloworld">http://localhost:8080/struts2/action/helloworld的原因?br />
2.一般情况下Qpackage都应当承自struts-default包,卻Ipackage的extends属性设|ؓ(f)"struts-default"Q这h能获得struts2的许多功能?br />
3.action的method属性主要是定义请求交laction中的哪个Ҏ(gu)来处理?br />
4.result标签中的name属性值对应action中的处理Ҏ(gu)(q里是executeҎ(gu))的返回|用来定义在该q回值的情况下如何进行{向?br />
上面的应用中的jsp文g攄在WEB-INF文g下,主要是ؓ(f)了不让用L(fng)接访问到jsp面Q而是通过讉Ka(chn)ctionQƈ通过action的控制来讉K信息?br />
(psQ用L(fng)接访问jsp文g也无法获得msg的?
]]>
3.q入struts解压目录下的lib目录中,扑ֈ以下jar文g(版本号可能不?Q?br />
struts2-core-2.x.x.jar
xwork-2.x.x.jar
ognl-2.6.x.jar
freemarker-2.3.x.jar
commons-logging-1.1.x.jar
commons-fileupload-1.2.x.jar
这些jar文g拯x建的web目的WEB-INF/lib目录下。这些jar文g时开发struts2应用需要的最的jar文g集合?br />
4.在项目的src目录下新建或者从别处拯一个struts.xml。该文g是struts2的配|文件。该文g可以通过以下方式获得Q?br />
在struts的解压目录下的apps目录下有一些struts2的示例应用。例如,struts2-blank-2.1.8.1.war。用WinRAR其解压~,在解压目?br />
下的WEB-INF/classes目录下,扑ֈstruts.xmlQ将其复制到目的src目录下,打开该文Ӟ?lt;struts></struts>标签对中的其他内?br />
删除?br />
5.修改web.xml文g。进入解压的strutsCZ应用Q将WEB-INF目录下的web.xml文g拯替换目中的web.xml文g卛_?br />
或者也可以在项目中的struts.xml文g中添加一个Filter的配|:(x)
q样Qstruts2的开发环境就搭徏好了?br /> Q以上内Ҏ(gu)据传智播客的相关视频整理Q主要是方便自己以后查看Q?/span>