struts2封装请求参数
利用struts2框架进行将页面请求的参数封装有三种方法
第一种(不推荐)
就是动作类和bean中结合在一起,这样方法比较简单,但是很混乱。
代码:
package com.example.action;
import com.opensymphony.xwork2.ActionSupport;
public class Person extends ActionSupport{
private String username;
private String password;
private String nickname;
public String getUsername() {
return username;
}
//动作的方法
public String execute() throws Exception {
System.out.println(username+","+password+","+nickname);
return NONE;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
<action name="act1" class="com.example.action.Person">
<!-- 静态注入 相当于调用action动作类的get 和set 方法--> <param name="nickname">游客</param>
</action>
第二种将动作类与bean中分离
package com.example.domain;
/**
* 这是模型
* @author sheldonLee
*
*/
public class Student { private String username;
private String password;
private String nickname;
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 getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@Override
public String toString() {
return "Student [username=" + username + ", password=" + password
+ ", nickname=" + nickname + "]";
} }
package com.example.action; import com.example.domain.Student; /**
* 这是动作
* @author sheldonLee
*
*/
public class StudentAction { private Student student; public Student getStudent() {
return student;
} public void setStudent(Student student) {
this.student = student;
} public String save(){
//将表单的数据封装到模型对象中
//调用service 将student中的数据保存到数据库中
System.out.println(student.toString());
return "none";
}
}
<body>
<form action="${pageContext.request.contextPath }/act2" method="post">
用户名:<input type="text" name="student.username"/><br/>
密 码:<input type="password" name="student.password"/><br/>
昵 称: <input type="text" name="student.nickname"/><br/>
<input type="submit" value="注册"/><br/>
</form>
第三种是驱动模型(动作和bean也是分开的)ModelDriven
package com.example.domain;
/**
* 这是Customer模型
* @author sheldonLee
*
*/
public class Customer {
private String username;
private String password;
private String nickname;
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 getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
@Override
public String toString() {
return "Customer [username=" + username + ", password=" + password
+ ", nickname=" + nickname + "]";
} }
package com.example.action; import com.example.domain.Customer;
import com.opensymphony.xwork2.ModelDriven; public class CustomerAction implements ModelDriven<Customer>{ //动作类关联一个Customer 对象
//为了getModel() 这个不会返回为空 所以要是实例化一个对象
private Customer customer= new Customer(); public Customer getCustomer() {
return customer;
} public void setCustomer(Customer customer) {
this.customer = customer;
} public String save(){
System.out.println(customer);
return "none";
}
//调用动作方法前,框架会先调用这个方法
//这里不会实例化对象
public Customer getModel() {
// TODO Auto-generated method stub
return customer;
}
}
<form action="${pageContext.request.contextPath }/act2" method="post">
<!--参数中省掉了类名 -->
用户名:<input type="text" name="username"/><br/>
密 码:<input type="password" name="password"/><br/>
昵 称: <input type="text" name="nickname"/><br/>
<input type="submit" value="注册"/><br/>
</form>
主要注意两点 动作类要实现ModelDriver的接口,动作类中要关联对象要注意要实例化
struts2封装请求参数的更多相关文章
- 十一、Struts2封装请求参数的方式
十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...
- struts2之请求参数接收
struts2之请求参数接收 1. 采用基本类型接受请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性.请求路径:http:/ ...
- struts2接受请求参数
https://blog.csdn.net/y249839817/article/details/77702745 https://blog.csdn.net/nthack5730/article/d ...
- Struts2接受请求参数三种常用方法
一 接受请求参数主要有三种:属性驱动 对象驱动 模型驱动<model Driven> 方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名 ...
- struts2获取请求参数的三种方式及传递给JSP参数的方式
接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...
- 利用Common-BeanUtils封装请求参数
一.BeanUtils介绍 commons-beanutils是利用反射机制对JavaBean的属性进行处理,提供了对于JavaBean的各种处理方法.众所周知,一个JavaBean通常包含了大量的属 ...
- Struts2中请求参数的接收方式和ModelDriven机制及其运用
odelDriven 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar ...
- struts2获得请求参数的方式
1.用Action的属性接收参数 2.用DomainModel(域模型)接收参数 3.用ModelDriven接收参数 使用这种方式接受参数需要实现ModelDriven接口,
- asp.net中Request请求参数的自动封装
这两天在测一个小Demo的时候发现一个很蛋疼的问题----请求参数的获取和封装,例: 方便测试用所以这里是一个很简单的表单. <!DOCTYPE html> <html xmlns= ...
随机推荐
- Windows 的 Oracle Data Access Components (ODAC)
下载 x64bit https://www.oracle.com/technetwork/cn/database/windows/downloads/index.html 适用于 Windows 的 ...
- C 和 Object-C中的 #ifdef #ifndef
很多宏是为了进行条件编译.一般情况下,源程序中所有的行都参加编译.但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”.有时,希望当满足某条件时 ...
- CentOS7.6离线安装MySql5.7
准备好mysql的离线安装文件: MySql官网下载mysql-5.7.25-1.el7.x86_64.rpm-bundle,并复制到/usr/mysql文件夹中. 删除CentOS自带的MariaD ...
- 二、用Delphi10.3 创建一条JSON数据的第二种方法,并格式化输出
一.用Delphi10.3构造一个JSON数据的第二种方法,并格式化输出,代码如下: uses //System.JSON, System.JSON.Types, System.JSON.Writer ...
- 详解 Python3 正则表达式(四)
上一篇:详解 Python3 正则表达式(三) 本文翻译自:https://docs.python.org/3.4/howto/regex.html 博主对此做了一些注明和修改 ^_^ 更多强大的功能 ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- vb6 读写文件
'--------------------------------- 'write file Dim nHandle As Integer, fName As String fName ...
- 2017-2018-1 20155210 《信息安全系统设计基础》 实现mypwd
2017-2018-1 20155210 <信息安全系统设计基础> 实现mypwd 作业要求: 1.学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...
- 如何启动 EDB*Plus
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 由于EnterpriseDB公司的网站上讲的 ...
- mfc 引用
一.引用的概念 引用(reference)是另一标识符的别名,可以说是C++的一种新的变量类型,是对C的重要扩充.当建立引用时,程序用另一个变量或对象(目标)的名字初始化它(即它代表了标识符的左值), ...