Struts2的模型驱动封装方法获取页面提交的表单数据(接收表单数据的最常用的方法)

本文介绍Struts2框架中两种主要的表单数据获取方法:属性封装和模型驱动。通过实例展示了如何配置Struts.xml,实现表单数据的提交,并在Action类中处理这些数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般获取表单的数据主要有两种方法:

1)属性封装方法获取表单提交数据

2)模型驱动方法获取表单提交数据

利用模型驱动封装方法可以直接把用户提交的表单数据直接封装到实体类的对象中,比如 User 的对象中,而不需要像属性封装那样自己写代码获取对象,是一种非常方便的方法,减少了代码的书写。

但是不能同时使用模型驱动封装和属性封装同时获取同一个表单数据,如果这样做了,那么只会执行模型驱动封装方法,但是可以同时使用获取不同的表单数据

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>
	<package name="hellodemo" extends="struts-default" namespace="/">
	<!-- 全局result属性 -->
	<global-results>
		<result name="ok">/hello.jsp</result>
	</global-results>
		<action name="ok" class="com.mx.action.okAction"></action>
		<!-- name:访问名称 -->
		<action name="hello" class="com.mx.action.helloAction">
			<!-- 配置方法的返回值到页面 ,在有局部result 的情况下,依局部result为准-->
			<!-- <result name="ok">/hello.jsp</result> -->
		</action>
	</package>
	<package name="form" extends="struts-default" namespace="/">
		<action name="hello1" class="com.mx.test_form.form_Action">
			<result name="success">/test_form.jsp</result>
		</action>
	</package>
	<!-- 把从表单提交的数据封装到action 的属性里面(属性封装) -->
	<package name="shuxingfengzhuang" extends="struts-default" namespace="/">
		<action name="sxfz" class="com.mx.shuxingfengzhuang.shuxingfengzhuang">
			<result name="success">/shuxingfengzhuang.jsp</result>
		</action>
	</package>
	<!-- 模型驱动封装方法获取页面提交的表单数据 -->
	<package name="moxingqudong" extends="struts-default" namespace="/">
		<action name="mxqd" class="com.mx.shuxingfengzhuang.moxingqudong">
			<result name="success">/moxingqudong.jsp</result>
		</action>
	</package>
</struts>

jsp 页面信息:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!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>
	<form action="${pageContext.request.contextPath}/mxqd.action" method="post">
		用户名:<input type="text" name="username"/><br/>
		密    码:<input type="password" name="password"/><br/>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>

User实体类:

package com.mx.entity;

public class User {

	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;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + "]";
	}
	
}
主程序:

package com.mx.shuxingfengzhuang;

import com.mx.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class moxingqudong extends ActionSupport implements ModelDriven<User>{


	private User user = new User();
	
	public User getModel() {
		return user;
	}

	public String execute(){
		System.out.println(user);
		return "success";
	}
	
}

附:属性封装方法获取表单提交数据

上面的 struts.xml 配置文件已经包含属性封装所需要的配置信息,jsp 页面信息和模型驱动封装的也是一样,只不过在标签 form 的 action 里面提交到属性封装的 action 里面,实体类同样是 User 类,就是主程序是主要内容如下:

package com.mx.shuxingfengzhuang;

import com.opensymphony.xwork2.ActionSupport;

public class shuxingfengzhuang extends ActionSupport {

	private String username;
	private String password;
	public void setUsername(String username) {
		this.username = username;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String execute(){
		System.out.println(username+":"+password);
		return "success";
	}
	
}


整个项目截图:




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micrle_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值