此次主要介绍用通配符来配置struts的action的class,name,result之间的链接。下面是实例:
1,struts.xml文件中配置:
[color=red] <action name="*_*" class="com.dd.action.{1}" method="{2}">
<result name="success">/{1}Result.jsp</result>
</action>
、[/color]
注意:abcAction,*Action.* ,如果有个请求是abcAction那么struts接受该请求的顺序是:
abcAction>*Action>*
一般不让用户直接请求视图资源,一般的做法是有这样的配置:
<action name="*">
<result>/{1}.jsp</result>
</action>
解释:名字为*表示优先级最低的接受所有请求,因为没有class属性,那么就会让ActionSupport来处理,而这个action的execute方法总是返回success字符串,而上面的result又没有那么属性默认的就是success那么就直接跳转至{1}.jsp中去了。
2,加法Action
引用
package com.dd.action;
public class AddAction {
private int number1;
private int number2;
private int sum;
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
public int getNumber2() {
return number2;
}
public void setNumber2(int number2) {
this.number2 = number2;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public String add(){
setSum(getNumber1()+getNumber2());
return "success";
}
}
3,减法Action
package com.dd.action;
import com.opensymphony.xwork2.ActionSupport;
public class ReduceAction extends ActionSupport {
private int number1;
private int number2;
private int sum;
public int getNumber1() {
return number1;
}
public void setNumber1(int number1) {
this.number1 = number1;
}
public int getNumber2() {
return number2;
}
public void setNumber2(int number2) {
this.number2 = number2;
}
public int getSum() {
return sum;
}
public void setSum(int sum) {
this.sum = sum;
}
public String reduce(){
setSum(getNumber1()-getNumber2());
return "success";
}
}
4,用户操作页面。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'add.jsp' starting page</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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function changeAction(){
document.forms[0].action = "ReduceAction_reduce";
document.forms[0].submit();
}
</script>
</head>
<body>
<s:form action="AddAction_add">
<s:textfield name="number1"></s:textfield>
<s:textfield name="number2"></s:textfield>
<input type="button" value="减法" onclick="changeAction();"/>
<s:submit vlue="提交"></s:submit>
</s:form>
</body>
</html>
4,加法跳转页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
加法的结果页面<br>
<s:property value="sum"/>
</body>
</html>
5,减法跳转页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
减法的结果页面<br>
<s:property value="sum"/>
</body>
</html>
分享到:
相关推荐
例如,如果你有一个应用,所有的Action名称都遵循某种模式,如`user_*`,你可以使用通配符`user_*`来定义一个Action配置,这将自动覆盖所有符合该模式的Action。这样,你就不需要为每一个特定的Action如`user_save`...
1. **使用通配符配置Action**: - 例子:`<action name="student*" method="{1}" class="com.example.StudentAction">` - 这里的`student*`是一个通配符模式,匹配所有以`student`开头的Action。 - `{1}`表示...
<action name="delete" class="example.CrudAction" method="delete"> </action> ``` 这种方式较为简单直观,但当方法数量增多时,配置文件会变得冗长。 ##### 4.2 通配符方式 使用通配符可以更高效地管理多个...
通配符允许我们定义一个模式来匹配多个Action配置,而不是为每个单独的Action编写单独的配置项。 1.1 **Action配置通配符** 通配符配置通常是在`struts.xml`文件中完成的。例如,以下配置将匹配所有以`user_`开头...
"Action 通配符"是Struts2中的一个重要特性,这个特性使得我们可以使用一个通用的Action配置来处理一类相似的请求,极大地提高了代码的复用性和管理效率。本文将深入探讨Action 通配符的概念、作用以及如何在实际...
<action name="delete" class="example.CrudAction" method="delete"> ``` - **通配符配置**: 使用通配符可以简化配置,如: - **通配符(*)**: ```xml <action name="*Crud" class="example.Crud" method=...
而使用通配符后,可以简化为: ```xml <action name="user_*" class="com.example.UserAction"> <result type="dispatcher">/user/${1}.jsp</result> </action> ``` 这里的`*`是通配符,表示匹配任何字符序列。在...
在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...
- 处理相似的请求:如果你有一个处理用户操作的Action,如创建、编辑、删除,可以使用通配符避免为每个操作都配置一个单独的Action。 - 动态资源管理:对于动态生成的页面,比如根据ID获取资源,`/{id}`可以方便地...
除了XML配置,Struts2还支持使用注解来配置Action。在Action类或方法上添加`@Action`注解,可以指定请求映射、结果视图等。 6. **组合使用** 可以结合以上方法,如使用通配符和方法映射,让一个Action处理多个...
通过合理使用通配符,可以在一定程度上减少配置文件的冗余度,使配置更加简洁明了。 #### 二、通配符基本概念 在Struts2框架中,通配符主要用于Action的配置,其核心思想是“约定优于配置”。通过预设一定的命名...
还有一种方式是使用通配符方法,例如:<action name="*Action" class="com.LoginAction" method="{1}"></action>这时,我们可以在 JSP 文件中使用 `<s:form action="registerAction">` 将表单提交到 LoginAction 的 ...
例如,你可以声明一个Action类,指定它的结果页面,如`<action name="myAction" class="com.example.MyAction">`,然后定义一个或多个Result节点来指定不同的执行路径,如`<result name="success">success.jsp</...
<param name="actionName">login <param name="namespace">/controls </result> ``` 4. **PlainText**:此类型的结果用于直接返回文本内容,通常用于返回原始文件内容,如HTML、XML或纯文本文件。 - **配置...
<result type="dispatcher">/${actionName}.jsp</result> </action> ``` 在这个例子中,所有以"user_"开头的Action都会映射到`UserAction`类。Action名将作为方法名,例如访问`/user_save.action`会调用`...
在Struts2中,通配符匹配功能是一个非常实用的特性,它允许我们使用一种相对灵活的方式来映射Action请求,从而简化配置并提高代码的可维护性。以下是对"struts2通配符示例"的详细解释: 1. **通配符匹配原理**: ...
Struts2的配置文件不仅限于上述内容,还涉及更多细节,比如Interceptor配置、Result类型的定义、动态方法调用、通配符Action、类型转换器、异常处理策略等。每个部分都是为了提高应用程序的灵活性和可维护性,让...
通配符是Struts2.5框架中的一种强大的功能,它允许开发者使用通配符来指定方法,减少配置文件中的action数量。动态方法则是Struts2.5框架中的一种动态调用方法的方式,它允许开发者使用动态调用方法来实现灵活的方法...
<param name="actionName">${session.nextAction} </result> ``` ### 四、示例代码分析 1. **实体类User**: ```java public class User { private int userId; private String username; private String ...