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

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

这文章就谈论一下定义逻辑Action

这里主要关注的是struts.xml配置文件,一般情况下,我们会这样编写一个Action,当请求的名字为login的时候,就会调用LoginAction的类里面的execute方法

<action name="login" class="struts2.action.LoginAction">
<result name="success">/success.jsp</result>
<result name="input">/login2.jsp</result>
</action>

在这里我们只需要多个一个method的属性就能实现处理多请求,如下图,这样我们就可以在实现类DMIAction中分别请求两个不同的方法login和register实现不同的逻辑

<action name="D_Login" class="struts2.action.DMIAction" method="login">
<result name="success">RegisterSuccess.jsp</result>
</action> <action name="D_Register" class="struts2.action.DMIAction" method="register">
<result name="success">RegisterSuccess.jsp</result>
</action>

下面是完整例子

1.两个页面分别请求两个不同的请求,D_Login和D_Register

//DMI_login.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>
<h4>请输入</h4>
<s:form action="D_Login">
<s:textfield name="username" label="User Name" />
<s:password name="password" label="Password" />
<s:submit value="Login" />
</s:form> </body>
</html>
//DMI_register.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>
<h4>注册</h4>
<s:form action="D_Register">
<s:textfield name="username" label="User Name" />
<s:password name="password" label="Password" />
<s:submit value="Register" />
</s:form>
</body>
</html>

2.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.enable.DynamicMethodInvocation" value="true"/>
<package name="default" extends="struts-default">
<action name="D_Login" class="struts2.action.DMIAction" method="login">
<result name="success">RegisterSuccess.jsp</result>
</action> <action name="D_Register" class="struts2.action.DMIAction" method="register">
<result name="success">RegisterSuccess.jsp</result>
</action> </package>
</struts>

3.Action类

package struts2.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionSupport;

public class DMIAction extends ActionSupport {

    /**
*
*/
private static final long serialVersionUID = 1L; public String login() {
return SUCCESS;
} public String register() {
return SUCCESS;
} private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} private Map sessionMap;
private Map applicationMap;
public void setSession(Map sessionMap) {
this.sessionMap = sessionMap;
} public void setApplication(Map applicationMap) {
this.applicationMap = applicationMap;
}
}

Struts2学习笔记 - Action篇<定义逻辑Action>的更多相关文章

  1. Struts2学习笔记 - Action篇<配置文件中使用通配符>

    有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这里就说一下在配置文件中使用通配符,这里的关键就是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. 64位主机64位oracle下装32位客户端ODAC(NFPACS版)

    64位主机64位oracle下装32位客户端ODAC(NFPACS版) by dd 1.下载Oracle Data Access Components(ODAC) Xcopy的两个版本: x86:(我 ...

  2. Windows使用总结

    虚拟桌面快捷键: 新建虚拟桌面 Control+Win+D 切换虚拟桌面 Control+Win+左/右方向键 关闭虚拟桌面 Control+Win+F4 显示虚拟桌面列表 Win+Tab  

  3. NOIP提高模拟题 完全平方数

    完全平方数 (number.***(c/cpp/pas),1000ms,128mb) [问题描述] 一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数(Pefect Sqaure),也称 ...

  4. 通过监听键盘,实现对UITextView的内容移动

    视图出现时,增加观察 - (void)viewWillAppear:(BOOL)animated { // 增加对键盘的监听 [[NSNotificationCenter defaultCenter] ...

  5. sql 连接数不释放 ,Druid异常:wait millis 40000, active 600, maxActive 600

    Hibernate + Spring + Druid 数据库mysql 由于配置如下 <bean id="dataSource" class="com.alibab ...

  6. elasticsearch一些常用的配置

    配置了解 cluster #配置下集群的名称 cluster.name: my-application

  7. 【hihoCoder】1082: 然而沼跃鱼早就看穿了一切

      题目:http://hihocoder.com/problemset/problem/1082 输入一个字符串,将其中特定的单词替换成另一个单词   代码注意点: 1. getline(istre ...

  8. Python之路Day19-Django(二)

    本节内容概要: 一.路由系统URL 二.视图 三.模板 四.ORM操作 问题1:Django请求生命周期 -> URL对应关系(匹配) -> 视图函数 -> 返回用户字符串 -> ...

  9. PAT Judge

    原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...

  10. SQL语句经典大全

    一.基础 1.说明:创建数据库 CREATE DATABASE database-name  2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...