本例实现:
注:本例可通过struts.xml文件中指定action的method即可代替。即:实现一个Action类多个业务处理逻辑。
struts的一个Action处理多个业务逻辑问题,设计到form的动态提交
1,struts.xml配置如下:
<struts>
[color=red] <constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>该常量一定要设置为true[/color]
<!-- 配置的package的name不能和主文件struts中的package名称相同 -->
<package name="user1" extends="struts-default">
<action name="login2" class="com.dd.action.LoginAction">
<!-- 定义三个逻辑视图和物理资源之间的映射 -->
<result name="input">/login.jsp</result>
<result name="success">/welcome.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="loginRegist" class="com.dd.action.LoginRegistAction">
<result name="input">/loginRegist.jsp</result>
<result name="success">/loginRegist.jsp</result>
</action>
</package>
</struts>
2,Action的实现
package com.dd.action;
import com.opensymphony.xwork2.ActionSupport;
public class LoginRegistAction extends ActionSupport {
private String username;
private String password;
private String tip;
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;
}
public String getTip() {
return tip;
}
public void setTip(String tip) {
this.tip = tip;
}
public String regist(){
System.out.println("注册成功");
setTip("恭喜,你已经注册成功");
return SUCCESS;
}
@Override
public String execute() throws Exception {
System.out.println("登录成功");
if(getUsername().equals("admin") && getPassword().equals("admin")){
setTip("恭喜,登录成功");
return SUCCESS;
}else{
setTip("悲哀,登录失败");
return INPUT;
}
}
}
3,用户入库界面代码:
<%@ 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 'login.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">
<script type="text/javascript">
function loginregist(){
myform = document.forms[0];
myform.action = "loginRegist!regist";
myform.submit();
}
</script>
</head>
<body><%--struts标签key对应的是国际化资源文件中的key --%>
<s:form action="loginRegist">
<s:textfield name="username" key="user"></s:textfield>
<s:textfield name="password" key="pass"></s:textfield>
<input type="button" onclick="loginregist();" value="注册"/>
<s:submit key="login"></s:submit>
</s:form>
<s:property value="tip"/>
</body>
</html>
分享到:
相关推荐
1. **单一Action处理多个业务**:在一个Action类中定义多个方法,每个方法对应一个业务,然后在struts-config.xml配置文件中为每个方法指定不同的`<action>`元素。请求参数可以用来区分调用哪个方法。 2. **使用...
动态设置表单的`action`属性并通过JavaScript触发提交,是一种灵活的方式,可以根据不同的业务需求来动态控制页面的跳转。这种方式不仅增强了用户体验,还提高了系统的灵活性和可维护性。在具体实现时需要注意安全性...
1. XML配置:在struts.xml文件中定义Action配置,包含一个或多个validate元素,用于指定验证规则。验证失败时,Struts会自动将错误信息添加到ActionContext中,可以在JSP页面中展示。 2. 注解方式:通过在Action类...
在这个“一个form多个submit处理案例”中,我们将探讨如何在一个表单中使用多个submit按钮来实现不同的功能。这在实际应用中非常常见,比如在一个订单页面上,用户可能有一个“保存草稿”和“立即购买”的提交选项。...
在处理一个表单(form)中存在多个submit按钮的情况时,Struts2提供了一种优雅的方式来区分用户点击了哪个按钮,而无需像Struts1那样使用额外的动作类(如LookupDispatchAction或EventDispatchAction)。 在传统的...
但是,如果希望在同一个表单中实现多个功能,则需要借助客户端脚本来动态改变`action`属性的值,从而控制表单提交的目标地址。 #### HTML结构 首先,我们需要构建一个包含多个按钮的表单: ```html <form action=...
对于复杂的业务逻辑而言,有时我们需要在一个表单中提供多个提交按钮,以便根据不同的用户需求执行不同的后端逻辑。传统的处理方式可能会导致代码冗余以及维护困难等问题。为了更好地解决这一问题,Struts框架提供了...
表单中可以包含一个List类型的参数,允许用户输入多个值。在HTML中,这可以通过多次使用相同name属性的input元素实现。在Struts1中,ActionForm类需要有一个对应的List字段来接收这些值,这样在提交表单时,Struts1...
Struts2 框架中,一个 Action 可以包含多个处理逻辑,而不是只有一个 execute() 方法。在实际开发中,我们经常需要在一个 Action 中实现多个处理逻辑,这样可以减少代码的重复和提高开发效率。那么,在 Struts2 中...
标题中的“一个Form数据拆分到不同的jsp中”是指在Web开发中,如何将一个大型的表单(Form)逻辑拆分成多个独立的JavaServer Pages(JSP)文件,以便更好地管理和维护页面结构。这种做法有助于提高代码的可读性和可...
在Java Web开发中,表单上传是常见的功能之一,尤其是当用户需要上传多个文件时。本文将详细讲解如何实现这个功能,主要涉及HTML表单、Servlet、MVC框架(如Spring MVC)以及文件处理的相关知识。 1. HTML表单设置...
在Struts2框架中,处理多个请求的方法是通过一个Action类实现多个处理方法。这使得代码结构更加清晰,每个方法对应特定的业务逻辑。以下是Struts2处理多个请求的三种主要方式的详细说明: 1. **动态方法调用 (DMI -...
- **应用场景**:当一个页面中有多个提交按钮,每个按钮触发不同的业务逻辑时使用。 #### 三、DispatchAction详解 **1. 实现方法** - 创建一个继承自`DispatchAction`的类,并为其添加多个处理方法,这些方法...
在 Struts2 中使用 `redirect-action` 来实现 Action 之间的跳转是一种常见的做法,特别是在需要按顺序执行多个 Action 的业务场景中。通过这种方式,不仅可以保持应用程序的良好结构,还能有效地组织业务流程。同时...
5. **Action与多个Form的交互** ```xml <action path="/anAction" type="somePackage.someActionClass"> name="someForm" input="someJSP.jsp" <forward name="successful" path="/anotherAction.do"/> </...
2. **DispatchAction**: DispatchAction适用于处理多个请求的情况。当一个Servlet需要根据不同的参数值来执行不同操作时,DispatchAction就派上用场了。通过在struts-config.xml中设置parameter属性,我们可以指定...
今天,我们将通过一个实例来演示如何通过按钮将 Form 表单数据提交到 Action 层。 知识点 1: 使用 Button 提交 Form 表单数据 在 HTML 中,我们可以使用 Button 元素来提交 Form 表单数据。 Button 元素有两个主要...
通常,一个表单只有一个Submit按钮,但有时根据设计需求,我们可能需要在同一个表单中添加多个Submit按钮,以实现不同的提交功能。本文将深入探讨如何在HTML和JavaScript中实现一个表单多个Submit按钮的简单方法。 ...
在Struts框架中,Action类是业务逻辑的载体,它接收来自用户请求的数据,执行相应的业务处理,并返回一个表示结果的ActionForward对象,指导请求转向下一个视图。Action类通常继承自Struts提供的抽象基类,如org....