有三种方法可以使一个Action处理多个请求

  1. 动态方法调用DMI
  2. 定义逻辑Acton
  3. 在配置文件中使用通配符

这里就说一下在配置文件中使用通配符,这里的关键就是struts.xml配置文件,在最简单的配置当中,我们只需要写一个Action,但是一个Action只能对应一种处理方式,我们只需在Action的类中实现execute的方法即可,如下面的代码

package struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class Sample extends ActionSupport {

    /**
*
*/
private static final long serialVersionUID = 1L; @Override
public String execute() throws Exception {
//
return SUCCESS;
} }

如果需要一个Action类处理多个业务,那就需要用到以上三种方法,第一种方法只需要关注请求语句就行,第二种方法需要关注struts.xml配置文件,而这篇文章关注的也是配置文件

只需要把通配符写上就能实现多任务处理,如下面的配置,在这段配置可以看到一个test_*,{1}和result_{1}.jsp,例如:请求是test_page1,那么它对应的方法就是page1,对应返回的页面是result_page1.jsp,就这么简单(注意!!!,这里是区分大小写的,意思就是,例如:在页面当中aciton="Hello",那么在action类当中的方法名也要大写,public void Hello(),返回页面也要对应大写,Hello.jsp,如果这里使用hello.jsp,会报404找不到页面)

<action name="test_*" class="struts2.action.TestAction" method="{1}">
<result name="success">result_{1}.jsp</result>
</action>

接下来我们来看看完整的例子:

1.请求页面,这里有两个按钮,一个是执行test_page1的action,另一个是执行test_page2的action

//ResultTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>測試頁面</h1>
<s:form action="test_page1">
<s:submit value="测试页面1"/>
</s:form>
<s:form action="test_page2">
<s:submit value="测试页面2"/>
</s:form>
</body>
</html>

2.action类

这个类很简单,就实现了两个方法,page1和page2的方法,返回值都是success

package struts2.action;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport{

    /**
*
*/
private static final long serialVersionUID = 1L; public String page1() {
return SUCCESS;
} public String page2() {
return SUCCESS;
} }

3.struts.xml配置

当请求test_page1的时候,就会调用page1的方法,如果是success就返回,result_page1的方法

当请求test_page2的时候,就会调用page2的方法,如果是success就返回,result_page2的方法

<?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>
<package name="default" extends="struts-default">
<action name="test_*" class="struts2.action.TestAction" method="{1}">
<result name="success">result_{1}.jsp</result>
</action>
</package>
</struts>

4.返回页面

这里有两个返回页,一个是result_page1.jsp,另一个是result_page2.jsp,两个页面的内容一样,只是文字上有所不同,所以这里就不把两个页的代码贴出来,自己改改就行了

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>测试成功页1</h1>
</body>
</html>

Struts2学习笔记 - Action篇<配置文件中使用通配符>的更多相关文章

  1. Struts2学习笔记 - Action篇<定义逻辑Action>

    有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这文章就谈论一下定义逻辑Action 这里主要关注的是struts.xml配置文件,一般情 ...

  2. Struts2学习笔记 - Action篇<动态方法调用>

    有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这里就说一下Dynamic Method nvocation ,动态方法调用,什么是动态方 ...

  3. struts2学习笔记之四:多配置文件支持和常用配置参数

    struts2支持可以按照不同模块分类的方式拆分配置文件,支持多人分工合作,各自维护自己的配置文件,但是所有配置文件中包名和action的名称不能重复   struts2的配置文件方式有两种,stru ...

  4. Struts2 学习笔记--Action Method--接收参数

    struts2中的路径问题 注意:在jsp中”/”表示tomcat服务器的根目录,在struts.xml配置文件中”/”表示webapp的根路径,即MyEclipse web项目中的WebRoot路径 ...

  5. struts2学习笔记--struts.xml配置文件详解

    这一节主要讲解struts2里面的struts.xml的常用标签及作用: 解决乱码问题 <constant name="struts.i18n.encoding" value ...

  6. Android学习笔记(第二篇)View中的五大布局

    PS:人不要低估自己的实力,但是也不能高估自己的能力.凡事谦为本... 学习内容: 1.用户界面View中的五大布局... i.首先介绍一下view的概念   view是什么呢?我们已经知道一个Act ...

  7. nginx 学习笔记(6) nginx配置文件中的度量单位

    容量大小可以用比特(byte),千比特(kilobyte,后缀k或者K)或者兆(megabytes,后缀m或者M),例如:“1024”,“8k”,“1m”. 时间间隔可以用毫秒(millisecond ...

  8. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  9. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

随机推荐

  1. flex进行页面的基础布局

    接触flex有一段时间了,由于自己在移动上的经验比较少,一直以为这个和css3的其他属性差不多,就是一个盒模型的缩放之类的.今天一个移动的小项目用到了这个属性,仔细看了下,先不说里面具体的属性,就fl ...

  2. html或者jsp页面引用jar包中的js文件

    一,页面上引用jar包中的js文件的方法 使用java web框架AppFuse的时候发现,jquery.bootstrap等js框架都封装到jar包里面了.这些js文件通过一个wro4j的工具对其进 ...

  3. CentOS访问Windows共享文件夹的方法

    CentOS访问Windows共享文件夹的方法 1 在地址栏中输入下面内容: smb://Windows IP/Share folder name,smb为Server Message Block协议 ...

  4. hdu 1166 敌兵布阵(树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 题意:C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始 ...

  5. Alice and Bob(2013年山东省第四届ACM大学生程序设计竞赛)

    Alice and Bob Time Limit: 1000ms   Memory limit: 65536K 题目描述 Alice and Bob like playing games very m ...

  6. LIS最长上升子序列O(n^2)与O(nlogn)的算法

    动态规划 最长上升子序列问题(LIS).给定n个整数,按从左到右的顺序选出尽量多的整数,组成一个上升子序列(子序列可以理解为:删除0个或多个数,其他数的顺序不变).例如序列1, 6, 2, 3, 7, ...

  7. 基于VC的ACM音频编程接口压缩Wave音频(二)

    (二)获取CODECs 的 信 息  ACM 的API 函 数 定 义 在 头 文 件msacm.h 中, 除 此 之 外, 对ACM 编 程 还 必 须 包 含 头 文 件mmsystem.h,mm ...

  8. SAP HANA企业级培训系列课程<第一部分>

    No. 课程 备注 1 HANA概述 HANA 特点 2 HANA Server & Studio & Client 认识HANA Server \Client\ Studio, 熟悉 ...

  9. XMPP即时通信(基础)

      使用第三方框架 XMPPFramework   #import "ViewController.h" #import "XMPPFramework.h" @ ...

  10. #include <stdarg.h>

    名称描述相容  // 作用描述 va_start使va_list指向起始的参数 va_arg检索参数C89 va_end释放va_list va_copy拷贝va_list的内容 实例解析: #inc ...