Action中的动态方法调用简单示例——登录注册系统

Struts2——Action动态方法调用 对于同一个表单,当用户通过不同的按钮提交同一个表单时,系统需要使用Action的不同方法来处理用户请求,这时Action便需要包含多个控制处理逻辑,即一个action中包含多个方法。例如:login界面有“登录”和“注册”两个按钮,分别触发UserAction中的login和regist方法。 MVC模式:      经典MVC模式中,事件由控制器(controller)处理,控制器根据事件类 阅读详情

该项目有一个实现登录和注册功能的页面。

下面是该项目的文件结构图:
项目的文件结构图

1、编写视图界面(JSP页面)
登录页面
loginRegister.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Action中的动态方法调用</title>
		<script type="text/javascript">
			function register(){
				//获取页面第一个表单
				targetForm=document.forms[0];
				//动态修改表单的Action属性
				targetForm.action="loginReg";
				//表示提交函数
				document.forms[0].submit();
			}
		</script>
	</head>
	<body>
		<table width="360" align="center">
			<form  action="loginReg">
				<tr>
					<td>用户名:</td>
					<td><input name="userName" type="text" size="26"/></td>
				</tr>
				<tr>
					<td>密&nbsp;&nbsp;码:</td>
					<td><input name="passWord" type="password" size="26"/></td>
				</tr>
				<tr>
					<td><input type="submit" value="登录"/></td>
					<td><input type="submit" value="注册" onclick="register()"/></td>
				</tr>
			</form>
		</table>
	</body>
</html>

success2.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>成功页面</title>
	</head>
	<body>
		<s:property value="msg"/>
	</body>
</html>

2、编写业务控制器Action
LoginRegisterAction.java

package loginRegisterAction;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class loginRegisterAction extends ActionSupport{
	private String userName;
	private String passWord;
	//设置返回信息
	private String msg;
	
	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 getMsg() {
		return msg;
	}
	public void setMsg(String msg) {
		this.msg = msg;
	}
	//Action包含的注册控制逻辑
	public String regist() throws Exception{
		ActionContext.getContext().getSession().put("userName", getUserName());
		setMsg("恭喜你,"+userName+"注册成功!");
		return SUCCESS;
	}
	//Action默认包含的控制逻辑
	public String execute() throws Exception{
		if(getUserName().equals("hjw")&&getPassWord().equals("123")) {
			ActionContext.getContext().getSession().put("userName", getUserName());
			setMsg("你单击的是登录!"+"你的登录名为"+userName+",登录成功!");
			return SUCCESS;
		}
		else {
			return INPUT;
		}
	}

}

3、编写web.xml和struts.xml
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
	http://xmlns.jcp.org/xml/ns/javaeee/web-app_3_1.xsd" 
	id="WebApp_ID" 
	version="3.1" >
		<filter>
		<!-- 配置Struts2核心控制器的名字 -->
		<filter-name>struts2</filter-name>
		<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
	</filter>
	
	<filter-mapping>
		<!-- Struts2控制器的名字 -->
		<filter-name>struts2</filter-name>
		<!-- 拦截所有的URL请求-->
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	
	<welcome-file-list>
		<welcome-file>loginRegister.jsp</welcome-file>
	</welcome-file-list>
	
	
</web-app>

struts.xml

<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="zzf" extends="struts-default">
		<action name="loginReg" class="loginRegisterAction.loginRegisterAction" method="execute">
			<result name="success">/loginRegister/success2.jsp</result>
		</action>
		<action name="loginReg" class="loginRegisterAction.loginRegisterAction" method="regist">
			<result name="success">/loginRegister/success2.jsp</result>
		</action>
	</package>
</struts>

4、项目运行
登录成功界面:
登录成功界面
注册成功界面:
注册成功界面

C#点阵字库查看器:像素级字模解析与调试 点阵字体与字模存储是嵌入式显示的基础:字符被编码为按行排列的字节位图,再由宽高、每行字节数和位序还原为像素。理解字节偏移、位序与行填充,能显著提升字库解析的准确性。像素级可视化与坐标反查的技术价值在于把“改字—烧录—看屏”的试错闭环压缩为可验证的字节—像素对应关系。它适用于HZK16/ASC16、BDF/FNT等点阵字库维护、字模提取和嵌入式LCD显示调试。基于C# WinForms与GDI+的点阵字库查看器,通过最近邻缩放、网格高亮和偏移定位,让字模解析与调试更直观,并支持C数组导出。 阅读详情

相关推荐

模仿学习(Imitation Learning)概述

什么是模仿学习呢?简单来说,模仿学习(Imitation Learning),就是要训练机器能够复制人类的连续动作,进而达到模仿的目的。其实,Imitation Learning的实用性很高,假设今天有一个训练场景,你不知道该怎么定奖励值(reward),但是你可以收集到专家的示范数据(expert demonstration data),你就可以考虑用Imitation Learning这个方法。因此,模仿学习也被寄予很高的期待,成为下一代强人工智能的关键技术。......

qq_22749225的博客 2万+

C#委托之Action<T>和Func<T>

C#中的委托(二) 一、Action&lt;T&gt;和Func&lt;T&gt;委托      除了上篇描述的为每个参数和返回类型定义一个新委托类型之外,还可以使用Action&lt;T&gt;和Func&lt;T&gt;委托。通过T的标示,我们可以知道这是两个泛型委托。 二、Action&lt;T&gt;      其中Action&lt;T&gt;委托表示引用一个void返回类型的方...

it_zhf的博客 1001

表单的学习——简单的注册窗口

HTML学习(10)

m0_67737085的博客 1300

Eplan2022 复制已有的宏文件生成新的原理图宏文件

Eplan2022 新建原理图宏文件

haier123888的博客 1万+

[事件相机1]2024CVPR:Event Stream-based Visual Object Tracking: A High-Resolution Benchmark Dataset

作者:Xiao Wang, Shiao Wang, Chuanming Tang, Lin Zhu, Bo Jiang, Yonghong Tian, Jin Tang代码:https://github.com/Event-AHU/EventVOT_Benchmark。

m0_37412775的博客 1707

action里边的登录方法

public class AdminAction extends BaseAction { // 当前Action涉及到业务对象 private AdminService adminService; private Admin admin; public void setAdminService(AdminService adminService) { this.ad

chuyuqing的专栏 2132

stm32项目实战(1)光敏电阻的介绍和使用

文章目录前言一、光敏电阻介绍二、cubeMX配置三、代码说明总结 前言 本篇文章我们讲带大家了解光敏电阻的使用 一、光敏电阻介绍 下面是4线光敏电阻实物图 产品接线说明: 1、VCC 接电源正极 3.3-5V 2、GND 接电源负极 3、DO TTL 开关信号输出 (配置为输出模式) 4、AO 模拟信号输出(ADC采样通道) 光敏电阻主要用于检测周围的光照强度,光照强度发生变化那么ADC采样的值也会发送变化。 二、cubeMX配置 简单的配置我们就不多说了主要是ADC采样的配置 这里我采用的是ADC1通道

m0_49476241的博客 1万+

struts简单入门实例

 struts入门简单实例 环境:Ecplise3.2 + Tomcat5.5 + struts1.2.9  工程结构分布图: web.xml文件内容:     PUBLIC "-//Sun Micr

suihu的专栏 1656

配置 SAP Web Dispatcher 的实战指南:打通 SAP Fiori、SAP Gateway 与前端系统的关键一跳

SAP Web Dispatcher 在 Fiori 架构中扮演关键角色,作为统一入口处理 HTTPS 请求、实现安全代理和流量分发。它将分散在不同系统的访问路径统一收口,解决浏览器同源策略限制,集中管理 HTTPS 终止和客户端信息传递。典型配置中,Web Dispatcher 监听 443 端口,根据路径将 OData 请求转发至 Gateway 系统,静态资源请求送至前端服务器。SSL 相关配置(如 PSE 文件)确保安全通信,而路由规则(wdisp/system_xx)决定请求转发目标。实施时需注意

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 103

Raspberry Pi Pico SDK开发-Timer-定时

RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (PIO)。 本实例将演示如何使用Timer的定时功能。

视觉与物联智能 2041

struts2 中action的动态方法调用

 struts2 中action的动态方法调用

不疯癫不成活 613

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Struts2中Action方法的动态调用(一个Actiong有两个方法)

<br />Struts2中Action方法的动态调用(一个Actiong有两个方法)<br />如下Action中有两个方法:loginok()与registerok()<br />public String loginok() throws Exception { System.out.println("input....."); return "loginok"; } public String registerok() throws Exception {

feiyang431的专栏 6762

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

struts2之动态方法调用

当我们访问一个Action时,默认是访问execute()方法,但当在一个Action中存存多个方法时,这时我们应该怎么定位到想要访问的方法呢?这时就需要用到动态方法调用DMI(Dynamic Method Invocation)。这里简单介绍两种动态调用的方法: 一、method属性 二、通配符   一、method属性 在struts.xml文件中,我们可以指定method属性,来定

Java技术与你分享 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Struts的Action的动态方法调用实战

一Action package org.crazyit.app.action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ActionContext; public class LoginRegistAction extends ActionSupport { ...

实践求真知 145

struts2动态方法调用,javascript动态修改表单的action,设置几个提交按钮

JavaScript代码的核心在于动态修改表单元素的action属性,修改后的action属性为login!regist.action 实际上就是将该表单提交给login Action 的regist方法处理 对于使用动态方法调用的方法,例如regist方法,该方法的声明与系统默认的execute方法只有方法名不同,其它的都应该绝对相同    //开启系统的动态方法调用是通过设置stru...

道格拉斯 194

Struts2框架5.Action中动态方法调用

例如我我们的网站,现在有登陆功能,所以我们写了一个登陆的Action,现在我们想做注册功能,那么是不是还要再写一个注册的Action?。现在只有登陆和注册,只需要两个Action,但是我们网站功能越多,需要的Action就越多。这是没有必要的,而且代码管理起来也会很麻烦,所以我们就可以在一个Action中写多个方法来,实现登陆、注册等功能。这个时候就需要我们来动态的调用Action中的方法。

柠檬需要糖 497

struts2学习笔记(4)---------action中的方法调用

系统需要使用Action的不同方法来处理用户请求,这就需要让同一个Action

jihaixiao8的专栏 905

Strutc 2中Action中的执行方法

action中的执行方法 1. Action中默认的执行方法是execute方法 2. 在struts.xml为Action配置method属性 3. DMI(Dynamic Method Invocation - 动态方法调用) 4. 使用通配符(wildcard mappings)映射方式 5. 提交按钮指定提交方法   下面将分别介绍这几种方法,并附上自己测试过程的配置和结果的

ZHB_1986的专栏 1403

注册登录功能实现struts2动态调用

login.jsp Action中的动态调用 function register(){ document.form1.action="loginReg!regist"; document.form1.submit(); } 用户名: <input type="text" name="user

tuke_tuke的博客 2966

Struts2 学习总结(四):创建Action的几种方式+动态方法调用

将通过在第一篇文章中的HelloWorld来介绍这几种方式 一、实现Action接口 这种方法需要实现execute()方法,无需在struts.xml文件中<action>标签中注明method Action类代码如下: package controller; import com.opensymphony.xwork2.Action; public class Hel...

知且行的博客 1389

struts2动态方法调用,javascript动态修改表单的action

成都信息工程 周旭(Java学生) 2496

调用Action中的自定义方法(4种方式)

Action中的execute()方法是默认方法,在执行时被自动调用。但也允许在Action中自定义方法。可以在Action中自定义多个方法,分别处理不同的逻辑。当Action 中使用了自定义方法,该Action 就需要特定的配置,一般有四种调用方式: (1)使用struts.xml 文件中的method属性; (2)使用动态方法调用方式(DMI); (3)使用提交按钮的method属性; (4)...

iii_am_haomiaozi的博客 4631

struts之动态方法调用改变表单action属性

一、动态方法调用(DMI:Dynamic Method Invocation)    ⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理。例如:当用户通过不同的提交按钮来提交同一个表单的时候,系统通过不同的方法来处理用户不同的请求,这时候就需要让同一个Action中包含有多个控制处理的逻辑。    ⒉动态方法调用有:  ...

weixin_30512785的博客 151

Struts-2.5 Action动态调用与通配调用无效解决办法

Struts-2.5 Action动态调用与通配调用无效解决办法标签(空格分隔): 后端技术学习一、问题引入1. 动态方法调用的使用在实际开发中,随着应用程序的不断扩大,不得不管理数量庞大的Action,为了减少Action,通常在一个Action中编写不同方法(必须遵从execute()方法相同的格式)出来不同的请求,如编写LoginAction,其中login()方法处理登录,register(

qq_34023135的博客 1557
上一篇: struts.xml配置文件
下一篇: AQS浅谈
monkey_wei
博客等级 码龄8年 62粉丝 139原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值