当前位置: 首页 > news >正文

Struts的属性驱动和模型驱动

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

struts2中我们可以使用Model-DrivenProperty-Driven进行表单数据的封装,便于我们在Action中直接使用

属性驱动时,只要保持表单域名字和Action属性名一致,即可自动进行值得填充。

第一种

http://localhost:8080/Struts/paramter?username=aa&password=bb

访问的路径和参数username=aa&password=bb

代码

package org.heinrich.action;

import com.opensymphony.xwork2.ActionSupport;

public class ParamterAction extends ActionSupport {
	

	private static final long serialVersionUID = -8556185601880040463L;
	private String username;
	private String password;
	
	public String login(){
		
		System.out.println(username);
		System.out.println(password);
		
		return SUCCESS;
	}
	
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}

}

hr-user.xml文件

<action name="paramter" class="org.heinrich.action.ParamterAction" method="login">
    <result>/success.jsp</result>			
</action>

在Action中直接可以拿到

username :heinrich
password :123456

在页面上我要拿到username和passowrd的话

username : ${username }
password : ${password }

框架会为你把username和password传到下一个页面

username : heinrich password : 123456

还有一个属性驱动的方式

http://localhost:8080/Struts/paramter?user.username=heinrich&user.password=123456

参数传递方式user.username=heinrich&user.password=123456

package org.heinrich.action;


import org.heinrich.User;

import com.opensymphony.xwork2.ActionSupport;

public class ParamterAction extends ActionSupport {
	

	private static final long serialVersionUID = -8556185601880040463L;
	private User user;
	
	public String login(){
		
		System.out.println(user.getUsername());
		System.out.println(user.getPassword());
		
		return SUCCESS;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
		
}

获取前台传过来的参数,还会把他放到下个页面使用

页面取值
		username : ${user.username }
		password : ${user.password }

还有一种基于模型驱动的方式,官方不推荐使用,我比较喜欢用官方的

package org.heinrich.action;


import org.heinrich.User;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class ParamterAction extends ActionSupport implements ModelDriven<User>{
	

	private static final long serialVersionUID = -8556185601880040463L;
	private User user = new User();
	
	public String login(){
		
		System.out.println(user.getUsername());
		System.out.println(user.getPassword());
		
		return SUCCESS;
	}


	@Override
	public User getModel() {
		
		return user;
	}


	public User getUser() {
		return user;
	}


	public void setUser(User user) {
		this.user = user;
	}
		
}

在我看来这种方式不错,用来做Abstract类的Action的时候很好用

其实还有

方法3:可以通过ActionContext对象Map  parameterMap=context.getParameters();方法,得到请求参数Map,然后通过parameterMap来获取请求参数。需要注意的是:当通过parameterMap的键取得参数值时,取得是一个数组对象,即同名参数的值的集合。 

package org.heinrich.action;


import java.util.Map;

import org.heinrich.User;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class ParamterAction extends ActionSupport{
	

	private static final long serialVersionUID = -8556185601880040463L;
	
	
	public String login(){
		
		Map<String, Object> contextMap = ActionContext.getContext().getParameters();
		
		for(String key:contextMap.keySet()){
			Object object = contextMap.get(key);
			System.out.println(key+"  :"+object.toString());
		}
		
		return SUCCESS;
	}


}


方法4:通过ActionContext取得HttpServletRequest对象,然后使用request.getParameter("参数名")得到参数值。

package org.heinrich.action;


import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.heinrich.User;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class ParamterAction extends ActionSupport{
	

	private static final long serialVersionUID = -8556185601880040463L;
	
	
	public String login(){
		
		HttpServletRequest request =(HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
		
		String username = request.getParameter("user.username");
		String password = request.getParameter("user.password");
		System.out.println(username);
		System.out.println(password);
		request.setAttribute("username", username);
		request.setAttribute("password", password);
		
		return SUCCESS;
	}


}



转载于:https://my.oschina.net/heinrichchen/blog/607653

相关文章:

  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • RHCA CL220实战系列(一)之KVM部署CloudForms
  • C 指针函数
  • 使用visualvm的插件btrace的一个例子
  • 在java程序中访问windows有用户名和密码保护的共享目录
  • expect 自动登录
  • ImportError No module named setuptools解决
  • Drill官网文档翻译五:连接到数据源
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 利用系统错误日志监控磁盘健康状况
  • 模式识别(第四版)上机实验 【2.2~2.5】
  • 第23讲: Scala高阶函数实战详解
  • SQL Server代理(5/12):理解SQL代理错误日志
  • Spring中@Autowired注解、@Resource注解的区别
  • jquery easyui的datagrid在初始化的时候会请求两次URL?
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Flannel解读
  • Java|序列化异常StreamCorruptedException的解决方法
  • linux学习笔记
  • Object.assign方法不能实现深复制
  • 阿里云Kubernetes容器服务上体验Knative
  • 半理解系列--Promise的进化史
  • 从伪并行的 Python 多线程说起
  • 服务器之间,相同帐号,实现免密钥登录
  • 给第三方使用接口的 URL 签名实现
  • 我与Jetbrains的这些年
  • 追踪解析 FutureTask 源码
  • 2017年360最后一道编程题
  • 回归生活:清理微信公众号
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (2015)JS ES6 必知的十个 特性
  • (C语言)字符分类函数
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • *Django中的Ajax 纯js的书写样式1
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net FrameWork简介,数组,枚举
  • .Net 应用中使用dot trace进行性能诊断
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [@Controller]4 详解@ModelAttribute
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [AIGC] MySQL存储引擎详解
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [C++]18:set和map的使用
  • [CTO札记]盛大文学公司名称对联
  • [dts]Device Tree机制
  • [EFI]MSI GF63 Thin 9SCXR电脑 Hackintosh 黑苹果efi引导文件
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [HTML]Web前端开发技术29(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [Java]快速入门二叉树,手撕相关面试题
  • [Jquery] 实现温度计动画效果