有三种方法可以使一个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. Java读取文件的几种方式

    package com.mesopotamia.test; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...

  2. iOS进阶_FMDB的简单使用

    先引入FMDB第三方,点击查看方法 一.创建表 1.创建sql语句    NSString *createSql = @"create table if not exists t_stude ...

  3. PL/SQL通过存储过程为相同数据添加序号

    在Oracle数据库中存有一串数据(Ori_Seq),数据包含不等量重复: 为方便查看与管理,现希望添加一字段(New_Seq),在原有数据的末尾为其添加一串序号,相同数据序号从小到大排列,序号长度为 ...

  4. spring MVC原理

    spring MVC原理   Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt D ...

  5. postfix下dovecot查收邮件连接错误

    [root@localhost ~]# telnet mail.izyno.com 110 Trying 192.168.199.133... Connected to mail.izyno.com. ...

  6. java获取路径的方法

    package com.zjf; import java.io.File; public class GetPath { public static void getPath() { //方式一 Sy ...

  7. [ASE]sprint2 总结 & sprint3计划

    第二个sprint半圆满的结束了, 经历了四周之后我们将整个的框架搭建好,并且能够正常的游戏对战,破坏场景,聊天…… 但是正如老师所述,缺乏亮点. 不过大家都是第一次做,完全把他当成一个工程来一点一点 ...

  8. nginx+winsw windows服务

    1.下载Nginx:http://nginx.org/en/download.html 2.下载winsw配置包:http://files.cnblogs.com/files/objecttozero ...

  9. 软件工程day4

    使用ps制作了一个icon,将在下个版本中添加,用作程序图标. 参与组例会,得知新功能“吐槽墙”将以聊天室类似的社区形式实现. 提出对现有UI的建议: 对目前的登录窗口的UI不做改动,将标题的“用户登 ...

  10. node(thrift)

    thrift是一种跨语言的RPC框架,据说uber采在node.js项目中采用thrfit后,比原有的http+json的方式提高近20倍的性能. 所谓的RPC本质上就是客户端将需要调用的方法名和参数 ...