java struts action_Struts2 Action/动作

动作是Struts2框架的核心,因为他们的任何MVC(模型 - 视图 - 控制器)框架。每个URL将被映射到一个特定的动作,它提供了来自用户的请求提供服务所需的处理逻辑。

但动作也提供其他两个重要的能力。首先,操作从请求数据的传输中起着重要的作用,通过向视图,无论是一个JSP或其它类型的结果。二,动作必须协助的框架,在确定结果应该渲染视图,在响应该请求将被退回。

创建动作:

在Struts2的动作,唯一的要求是必须有一个无参数的方法返回String或结果的对象,必须是一个POJO。如果不带参数的方法是不指定,则默认动作是使用execute()方法。

也可以选择扩展ActionSupport类实现了6个接口,包括动作界面。动作界面如下:

publicinterfaceAction{publicstaticfinalStringSUCCESS="success";publicstaticfinalStringNONE="none";publicstaticfinalStringERROR="error";publicstaticfinalStringINPUT="input";publicstaticfinalStringLOGIN="login";publicStringexecute()throwsException;}

让我们来看看Hello World示例的操作方法:

packagecom.yiibai.struts2;publicclassHelloWorldAction{privateStringname;publicStringexecute()throwsException{return"success";}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}

为了说明这一点,操作方法控制视图,让我们做出以下更改执行方法和扩展类ActionSupport 如下:

packagecom.yiibai.struts2;importcom.opensymphony.xwork2.ActionSupport;publicclassHelloWorldActionextendsActionSupport{privateStringname;publicStringexecute()throwsException{if("SECRET".equals(name)){returnSUCCESS;}else{returnERROR;}}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}

在这个例子中,我们有一些在execute方法的逻辑来看待的name属性。如果属性等于字符串“SECRET”,我们返回SUCCESS 的结果,否则我们返回ERROR 的结果。因为我们已经扩展ActionSupport,所以我们可以使用字符串常量的成功和错误。现在,让我们修改我们的struts.xml文件如下:

<?xml version="1.0"encoding="UTF-8"?>/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">/HelloWorld.jsp/AccessDenied.jsp

创建视图

让我们创建以下JSP文件 helloWorld.jsp 的WebContent文件夹在eclipse项目。要做到这一点,右键单击WebContent文件夹在项目资源管理器,选择New >JSP File。该文件将要求返回的结果是SUCCESS,这是一个字符串常量“success”的定义在动作界面:

Hello WorldHello World,

以下是由框架的动作的结果将被调用的文件,该文件是等于字符串常量“错误”的ERROR 。以下是AccessDenied.jsp 的内容

Access DeniedYou are not authorized to view this page.

我们还需要在WebContent文件夹中创建index.jsp。该文件将作为初始动作URL,用户可以直接点击告诉Struts 2框架调用HelloWorldAction类的 execute方法,并呈现 helloWorld.jsp视图。

/p>

"http://www.w3.org/TR/html4/loose.dtd">

Hello World

Hello World From Struts2

Please enter your name

就是这样,不需要改变的web.xml文件,所以让我们用同一个web.xml,是之前我们已经创建了范例章。现在,我们已经准备好运行使用Struts 2框架的 Hello World应用程序。

执行应用程序

右键点击项目名称,并单击 Export > WAR File 创建一个WAR文件。然后在Tomcat 的webapps目录下部署这个WAR。最后,启动Tomcat服务器和尝试访问URL http://localhost:8080/HelloWorldStruts2/index.jsp。这会给出以下画面:

f32d641f7e3baffcf3312a14509681a6.png

让我们为“SECRET”,并输入一个字,应该看到以下页面:

42ca9cab8c803358eecb546503172c10.png

现在输入任何单词而非“SECRET”,应该看到以下页面:

5347ad889c02685b30d5b80e93f3dfc0.png

建立多个动作:

经常会定义一个以上的动作,以处理不同的请求,并提供不同的用户的URL,因此可以定义不同的类定义如下:

packagecom.yiibai.struts2;importcom.opensymphony.xwork2.ActionSupport;classMyActionextendsActionSupport{publicstaticStringGOOD=SUCCESS;publicstaticStringBAD=ERROR;}publicclassHelloWorldextendsActionSupport{...publicStringexecute(){if("SECRET".equals(name))returnMyAction.GOOD;returnMyAction.BAD;}...}publicclassSomeOtherClassextendsActionSupport{...publicStringexecute(){returnMyAction.GOOD;}...}

在struts.xml文件中配置这些操作如下:

<?xml version="1.0"encoding="UTF-8"?>/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">struts>/HelloWorld.jsp/AccessDenied.jsp/Something.jsp/AccessDenied.jsp

正如看到在上述假设的例子,动作的结果是重复的SUCCESS和ERROR。要解决这个问题,建议创建一个类包含结果的结果。

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值