我是靠谱客的博主 文静白羊,最近开发中收集的这篇文章主要介绍Struts2的Action编写,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Action的编写的方式:

第一种方式:

  Struts2的Action编写的最简单的方式就是写一个普通类,不继承自任何类,也不实现接口。如下:

 1 package cn.geore.action;
 2
 3 public class OneAction {
 4
/**
 5 
* 在Servlet中每次执行的是service方法,而在Struts2种每次调用执行的方法是execute()
 6 
* 因此对于具体的功能只需要卸载execute()中即可
 7 
* @return
 8
*/
 9
public String execute() {
10
return "first";
11 
}
12
13
public String add() {
14
return "add";
15 
}
16 }

 

第二种方式:

  创建一个普通类,然后实现Action接口。

 1 package cn.geore.action;
 2
 3 import com.opensymphony.xwork2.Action;
 4
 5 public class TwoAction implements Action {
 6
 7 
@Override
 8
public String execute() throws Exception {
 9
return "success";
10 
}
11
12 }

  Action接口的常量值:

 1
/**
 2 
* 成功,返回sucess。可以调用它,也可以在Action类中的execute方法中直接return "success";
 3
*/
 4
public static final String SUCCESS = "success";
 5
 6
/**
 7 
* The action execution was successful but do not
 8 
* show a view. This is useful for actions that are
 9 
* handling the view in another fashion like redirect.
10
*/
11
public static final String NONE = "none";
12
13
/**
14 
* The action execution was a failure.
15 
* Show an error view, possibly asking the
16 
* user to retry entering data.
17
*/
18
public static final String ERROR = "error";
19
20
/**
21 
* The action execution require more input
22 
* in order to succeed.
23 
* This result is typically used if a form
24 
* handling action has been executed so as
25 
* to provide defaults for a form. The
26 
* form associated with the handler should be
27 
* shown to the end user.
28 
* <p/>
29 
* This result is also used if the given input
30 
* params are invalid, meaning the user
31 
* should try providing input again.
32
*/
33
public static final String INPUT = "input";
34
35
/**
36 
* The action could not execute, since the
37 
* user most was not logged in. The login view
38 
* should be shown.
39
*/
40
public static final String LOGIN = "login";
View Code

 

第三种方式:

  创建类,继承父类ActionSupport

 1 package cn.geore.action;
 2
 3 import com.opensymphony.xwork2.Action;
 4 import com.opensymphony.xwork2.ActionSupport;
 5
 6 public class ThreeAction extends ActionSupport {
 7 
@Override
 8
public String execute() throws Exception {
 9
// .....
10
return Action.SUCCESS;
11 
}
12 }

 

Action类方法的访问:

  对于Action类的方法,在默认的情况下,在每次执行的时候,默认访问的多是execute()方法,如果要访问其他的方法,Struts2提供了三种方式进行方法的访问。对于Action类的方法,如果又返回值的时候就必须是String类型。如果方法不返回,可以使用void修饰,但是不建议这么写,一般使用return "none";表示返回为空,如下: 

 1 // 无返回值的时候建议这样子定义
 2 public String add() {
 3
// ......
 4
return Action.NONE;
 5 }
 6
 7 // 有返回值的时候,返回值必须为String类型
 8 public String update() {
 9
// ......

10
return Action.SUCCESS;
11 }

  

  定义一个BookAction类,在使用下面的三种方式实现对这个类方法的访问:

 1 package cn.geore.bookaction;
 2
 3 import com.opensymphony.xwork2.Action;
 4 import com.opensymphony.xwork2.ActionSupport;
 5
 6 public class BookAction extends ActionSupport {
 7
// 添加图书
 8
public String addBook() {
 9
System.out.println("添加图书...");
10
return Action.NONE;
11 
}
12
13
// 更新图书
14
public String updateBook() {
15
System.out.println("删除图书...");
16
return Action.NONE;
17 
}
18 }

  第一种方式:在struts2的核心配置文件中,action标签的method属性决定调用Action类的哪一个方法。

  book.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- method配置 -->
<package name="bookaction" extends="struts-default" namespace="/book">
<action name="addBook" class="cn.geore.bookaction.BookAction" method="addBook">
<!-- <result name="success">/jsps/one/addBook.jsp</result> -->
</action>
<action name="updateBook" class="cn.geore.bookaction.BookAction" method="updateBook">
<!-- <result name="success">/jsps/one/updateBook.jsp</result> -->
</action>
</package>
</struts>

  struts.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3 
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4 
"http://struts.apache.org/dtds/struts-2.3.dtd">
 5 <struts>
 6
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
 7
<!-- 引入外部的Struts模块的配置文件 -->
 8
<!-- <include file="cn/geore/action/one.xml"></include> -->
 9
<include file="cn/geore/bookaction/book.xml"></include>
10 </struts>

运行截图:

 

  第二种方式:使用通配符的方式实现方法的访问

     对于第一种方式,我们在package标签中,要配置action,每一个方法均要配置一个action,如果对于一个很多方法的开发,那么就要写非常多的action配置。那么这样写无疑是比较麻烦的,而Struts2的通配符方式就可以解决这个问题。

  使用的方式:在action标签的name属性,给name属性的值一个*号(星号表示匹配任意的内容)。  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 通配符配置 -->
<package name="bookaction" extends="struts-default" namespace="/book">
<!--
name = book_*;这个表示action接收所有以book_开始的任意的字符串
method中的{1},表示取得第一个占位符的值,也就是去的book_*的*所表示的值。
-->
<action name="book_*" class="cn.geore.bookaction.BookAction" method="{1}">
<!--
<result name="update">/jsps/one/updateBook.jsp</result>
<result name="add">/jsps/one/addBook.jsp</result>
-->
</action>
</package>
</struts>

  

  第三种方式:动态访问的方式访问方法

   

  

转载于:https://www.cnblogs.com/geore/p/7526934.html

最后

以上就是文静白羊为你收集整理的Struts2的Action编写的全部内容,希望文章能够帮你解决Struts2的Action编写所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部