struts2中Action处理多个请求(五)
2013-03-23 09:29
363 查看
下面来介绍一下三种Action处理多请求的方法:
.1,动态方法调用
2,定义逻辑Action
3,在配置文件中使用通配符
动态方法调用:一个Action中定义多个业务方法,在请求时采用“action名!业务方法名”的形式
定义逻辑Action:为每一个业务方法定义一个逻辑的Action,定义Action时指明method属性
在配置中使用通配符:通过使用通配符,简化Action配置
下面我们通过一个登陆的实现来一次性的将三种方法罗列出来:
login.jsp
AllMethod.java
struts.xml
通过以上的例子可以很明显的看出:
第一种方法的特点是:对Action请求时不仅包括Action的名称,还包含Action中指定的方法,格式如下:action名!方法名
第二种方法的特点是:
1、struts.xml定义一组name不同、class相同的action,每个action对应一个业务方法
2、action定义时设置method属性,其值为Action类中对应的业务方法名
第三种方法的特点是:
在<action>的name属性中使用"*"作通配符,它可以匹配任意一个字符串,在<action>元素的其它属性中,其内部的<result>元素中都可以使用"{n}"与其呼应,
其中n是表示匹配name中第几个"*"的一个整数, 如果有一个请求匹配了“*”,则其后的{n}将被自动替换
.1,动态方法调用
2,定义逻辑Action
3,在配置文件中使用通配符
动态方法调用:一个Action中定义多个业务方法,在请求时采用“action名!业务方法名”的形式
定义逻辑Action:为每一个业务方法定义一个逻辑的Action,定义Action时指明method属性
在配置中使用通配符:通过使用通配符,简化Action配置
下面我们通过一个登陆的实现来一次性的将三种方法罗列出来:
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>登陆界面</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <!-- 、 Action处理多请求方法一:动态方法调用 <form action="All!login.action" method="post"> <input type="text" name="username"><br> <input type="password" name="password"><br> <input type="submit" ><br> </form> --> <!-- 、 Action处理多请求方法二:逻辑定义 <form action="login" method="post"> <input type="text" name="username"><br> <input type="password" name="password"><br> <input type="submit" ><br> </form> --> <!-- 、 Action处理多请求方法三:通配符--> <form action="user_uu_login" method="post"> <input type="text" name="username"><br> <input type="password" name="password"><br> <input type="submit" ><br> </form> <br> </body> </html>
AllMethod.java
package action; import com.opensymphony.xwork2.ActionSupport; public class AllMethod extends ActionSupport { private String username; private String password; @Override public String execute() throws Exception { // TODO Auto-generated method stub return super.execute(); } public String login() { if ("ssh".equals(username) && "ssh".equals(password)) { return "login_success"; } return "login_fail"; } public String regist() { if ("ssh".equals(username) && "ssh".equals(password)) { return "regist_success"; } return "regist_fail"; } 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; } }
struts.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> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <!-- Action处理多请求方法1:动态方法调用 <constant name="struts.i18n.encoding" value="UTF-8"></constant> <package name="default" namespace="/" extends="struts-default" > <action name="All" class="action.AllMethod"> <result name="login_success">login_suc.jsp</result> <result name="regist_success">regist_suc.jsp</result> <result name="login_fail">login.jsp</result> <result name="regist_fail">regist.jsp</result> </action> </package> --> <!-- Action处理多请求方法2:逻辑定义 Action <constant name="struts.i18n.encoding" value="UTF-8"></constant> <package name="default" namespace="/" extends="struts-default" > <action name="login" class="action.AllMethod" method="login"> <result name="login_success">login_suc.jsp</result> <result name="login_fail">login.jsp</result> </action> <action name="regist" class="action.AllMethod" method="regist"> <result name="regist_success">regist_suc.jsp</result> <result name="regist_fail">regist.jsp</result> </action> </package> --> <!-- Action处理多请求方法2:使用通配符 <constant name="struts.i18n.encoding" value="UTF-8"></constant> <package name="default" namespace="/" extends="struts-default" > <action name="user_*_*" class="action.AllMethod" method="{2}"> <result name="{2}_success">{2}_suc.jsp</result> <result name="{2}_fail">{2}.jsp</result> </action> </package> --> </struts>
通过以上的例子可以很明显的看出:
第一种方法的特点是:对Action请求时不仅包括Action的名称,还包含Action中指定的方法,格式如下:action名!方法名
第二种方法的特点是:
1、struts.xml定义一组name不同、class相同的action,每个action对应一个业务方法
2、action定义时设置method属性,其值为Action类中对应的业务方法名
第三种方法的特点是:
在<action>的name属性中使用"*"作通配符,它可以匹配任意一个字符串,在<action>元素的其它属性中,其内部的<result>元素中都可以使用"{n}"与其呼应,
其中n是表示匹配name中第几个"*"的一个整数, 如果有一个请求匹配了“*”,则其后的{n}将被自动替换
相关文章推荐
- Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
- 超简单方法解决Struts2中一个action处理多个请求
- Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射 (
- 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过
- Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
- Struts2 一个form组成的action内包含多个请求的处理方式。通配符形式。
- Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
- Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
- Struts2 通配符映射(wildcard mappings) 多个请求一个action处理
- Struts2一个Action内包含多个请求处理方法的处理
- 通配符方式解决struts框架一个Action对应多个请求的处理
- Struts2同时处理.do/.action后缀的请求
- struts2-Action处理请求参数
- Struts2中一个Action多个请求处理方法的三种实现方式
- 一个Action内包含多个请求处理方法的处理
- Struts2一个Action内包含多个请求处理方法(三种方式)
- Struts2中一个Action多个请求处理方法的三种实现方式
- 在同一控制器类中处理多个请求的MultiActionController
- 在同一控制器类中处理多个请求的MultiActionController
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用