Struts2 Action

 具体实体的返回可以有用户自己定义的Action来决定

  具体的手段是根据返回的字符串找到对应的配置项,来决定实体的内容

  具体Action的实现可以是一个普通的java类,里面有public String execute方法即可

或者实现Action接口

  不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法

 ----------------------------------------------Hongten-------------------------------------------

新建web project:struts2_0300_Action

Build Path

 ----------------------------------------------Hongten-------------------------------------------

struts.xml

代码:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>     <constant name="struts.devMode" value="true" />     <package name="front" extends="struts-default" namespace="/">         <action name="index" class="com.bjsxt.struts2.front.action.IndexAction1">             <result name="success">/ActionIntroduction.jsp</result>         </action>     </package>

</struts>

 ----------------------------------------------Hongten-------------------------------------------

当我们访问这个action的时候,他会去找对应的class:com.bjsxt.struts2.front.action.IndexAction1

在IndexAction1这个类中找到execute()方法,返回一个字符串。如:success,input,login,none等

如果我们这里没有class,则他默认的会去调用:com.opensymphony.xwork2.Action这个接口中的execute()方法

还有如果我们在struts.xml中的result中没有写name="success",他 的默认也是<result name="success">

 ----------------------------------------------Hongten-------------------------------------------

在做测试的时候,分别修改:class="com.bjsxt.struts2.front.action.IndexAction2"

            和class="com.bjsxt.struts2.front.action.IndexAction3"

 在上面的三个测试当中,得到的是同样的结果;

 ----------------------------------------------Hongten-------------------------------------------

那么三种方法有什么区别呢?我们应该使用那一种方法呢?

我们在真正开发过程中就用:class="com.bjsxt.struts2.front.action.IndexAction3"这种方法;

              其他的都不用;就是从ActionSupport继承,

原因是:

ActionSupport已经

              帮我们封装了一系列可以直接调用的特别方便的方法;有很多方法封装在其中,

              我们在子类中可以直接拿来就用了

 ----------------------------------------------Hongten-------------------------------------------

IndexAction.java

代码:

package com.bjsxt.struts2.front.action;

public class IndexAction1 {  public String execute() {   return "success";  } }

 ----------------------------------------------Hongten-------------------------------------------

IndexAction.java

代码:

package com.bjsxt.struts2.front.action;

import com.opensymphony.xwork2.Action;

public class IndexAction2 implements Action {  @Override  public String execute() {   return "success";  } }

 ----------------------------------------------Hongten-------------------------------------------

IndexAction.java

代码:

package com.bjsxt.struts2.front.action;

import com.opensymphony.xwork2.ActionSupport;

public class IndexAction3 extends ActionSupport {  @Override  public String execute() {   return "success";  } }

 ----------------------------------------------Hongten-------------------------------------------

ActionIntroduction.jsp

代码:

<?xml version="1.0" encoding="GB18030" ?> <%@ page language="java" contentType="text/html; charset=GB18030"     pageEncoding="GB18030"%>     <%@taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> <title>Insert title here</title> </head> <body> 具体视图的返回可以由用户自己定义的Action来决定<br /> 具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容<br /> 具体Action的实现可以是一个普通的java类,里面有public String execute方法即可<br /> 或者实现Action接口<br /> 不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法<br /> </body> </html>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

Promise接口实现之jQuery 的deferred对象

本文作者:IMWeb json 原文出处:IMWeb社区 未经同意,禁止转载 Promise是什么? 我们知道JavaScript是单线程,如果遇到某...

19410
来自专栏Leetcode名企之路

jvm类加载机制

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。

1333
来自专栏PHP在线

开发常用知识点

php允许传递任意个参数: function getArg($a="",$b=""){ echo "one:".$a."<br/>"; echo "two"...

41014
来自专栏专注 Java 基础分享

虚拟机类加载机制

虚拟机把字节码文件从磁盘加载进内存的这个过程,我们可以粗糙的称之为「类加载」,因为「类加载」不仅仅是读取一段字节码文件那么简单,虚拟机还要进行必要的「验证」、「...

4717
来自专栏Python中文社区

Python3.7 contextvars 初探

Python 3.7 于2018年6月27日发布,本篇文章将对其中新增模块contextvars 做初步介绍,为读者勾勒一个大概轮廓。

1825
来自专栏纯洁的微笑

jvm系列(一):java类的加载机制

1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Cl...

4016
来自专栏about云

日志分析实战之清洗日志小实例5:实现获取不能访问url

问题导读 1.在url中,如何过滤不需要的内容? 2.如何获取404记录并且获取字段? 3.获取不能访问url列表的思路是什么? about云日志分析实...

3345
来自专栏腾讯IVWEB团队的专栏

yeoman-generator 中的 run loop 实现

yeoman genenrator 的 run loop,每一个添加进去的方法都会在 generator 调用的时候被调用,而且通常来讲,这些方法是按照顺序调用...

1960
来自专栏对角另一面

lodash源码分析之缓存方式的选择

每个人心里都有一团火,路过的人只看到烟。 ——《至爱梵高·星空之谜》 本文为读 lodash 源码的第八篇,后续文章会更新到这个仓库中,欢迎 star:po...

3529
来自专栏python3

习题25:布尔表达式练习

在编程中,布尔逻辑可以说是无处不在,它们是计算机运算的基础和重要组成部分,掌握它们很重要!

852

扫码关注云+社区

领取腾讯云代金券