Struts2学习笔记(六)——Action处理请求参数
在struts2框架中关于Action处理请求参数有两种方案(三个方式),表单属性的名称应该和在Action类中定义的成员属性或者在JavaBean中定义的成员属性名称一样:
1、属性驱动
1)直接在Action类中定义成员属性来接收请求参数 (将Action当成javaBean),在Action中还需要定义成员属性的setter方法。
表单信息:
<form action="${pageContext.servletContext.contextPath}/testAction.action">
name:<input type="text" name="name"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
Action类:
public class TestAction {
private String name;
private String password; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String execute() {
System.out.println("name: " + name);
System.out.println("password: " + password);
return "success";
}
}
前台输入信息:
后台显示结果:
2)直接将javaBean做为Action的属性,在页面上必须使用ognl表达式来描述组件的name属性
username:<input type="text" name="user.username"><br>
JavaBean:
public class Person {
private String name;
private String password; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
表单信息:
<form action="${pageContext.servletContext.contextPath}/testAction.action">
name:<input type="text" name="person.name"><br>
password:<input type="password" name="person.password"><br>
<input type="submit" value="提交">
</form>
Action:
public class TestAction {
private Person person; public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
} public String execute() {
System.out.println("name: " + person.getName());
System.out.println("password: " + person.getPassword());
return "success";
}
}
前台输入信息:
后台显示结果:
这种方式是通过name="params"的拦截器实现参数封装的。
<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
2、模型驱动
模型驱动处理请求参数的步骤为:
步骤:
- 1.Action必须实现ModelDriven接口
- 2.重写getModel()方法,返回一个javaBean对象.
- 3.实例化一个javaBean对象.
JavaBean:
public class Person {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
表单信息:
<form action="${pageContext.servletContext.contextPath}/testAction.action">
name:<input type="text" name="name"><br>
password:<input type="password" name="password"><br>
<input type="submit" value="提交">
</form>
Action:
public class TestAction implements ModelDriven {
private Person person = new Person(); public Person getPerson() {
return person;
} public void setPerson(Person person) {
this.person = person;
} public String execute() {
System.out.println("name: " + person.getName());
System.out.println("password: " + person.getPassword());
return "success";
} @Override
public Object getModel() {
return person;
}
}
前台输入信息:
后台显示结果:
4、封装数据到Collection或数组
JavaBean:
public class Person {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
表单信息:
<form action="${pageContext.servletContext.contextPath}/testAction.action">
name1:<input type="text" name="list[0].name"><br>
password1:<input type="password" name="list[0].password"><hr>
name2:<input type="text" name="list[1].name"><br>
password2:<input type="password" name="list[1].password"><br>
<input type="submit" value="提交">
</form>
Action:
public class TestAction {
private List<Person> list; public List<Person> getList() {
return list;
} public void setList(List<Person> list) {
this.list = list;
} public String execute() {
System.out.println("name1: " + list.get(0).getName());
System.out.println("password1: " + list.get(0).getPassword());
System.out.println("name2: " + list.get(1).getName());
System.out.println("password2: " + list.get(1).getPassword());
return "success";
}
}
前台输入信息:
后台显示结果:
5、封装数据到Map
JavaBean:
public class Person {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
表单信息:
<form action="${pageContext.servletContext.contextPath}/testAction.action">
name1:<input type="text" name="map['one'].name"><br>
password1:<input type="password" name="map['one'].password"><hr>
name2:<input type="text" name="map['two'].name"><br>
password2:<input type="password" name="map['two'].password"><br>
<input type="submit" value="提交">
</form>
Action:
public class TestAction {
private Map<String, Person> map; public Map<String, Person> getMap() {
return map;
} public void setMap(Map<String, Person> map) {
this.map = map;
} public String execute() {
System.out.println("name1: " + map.get("one").getName());
System.out.println("password1: " + map.get("one").getPassword());
System.out.println("name2: " + map.get("two").getName());
System.out.println("password2: " + map.get("two").getPassword());
return "success";
}
}
前台输入信息:
后台显示结果:
Struts2学习笔记(六)——Action处理请求参数的更多相关文章
- Struts系列笔记(6)---action接收请求参数
action接收请求参数 在web开发中,去接收请求参数来获得表单信息非常的常见,自己也总结整理了有关Struts2通过action接收请求参数的几种方法. Struts2 提供三种数据封装的方式: ...
- Struts2学习笔记(三)——Action详解
Action是用于处理请求操作的,它是由StrutsPrepareAndExceuteFilter分发过来的. 1.Action的创建方式 1) POJO类(PlainOldJavaObjects简单 ...
- struts2学习笔记之八:Action中方法的动态调用
方法一:action名称+!+方法名称+后缀 Action类中增加addUser()和delUser()方法, package com.djoker.struts2; import org.apach ...
- struts2学习笔记(4)接收参数
①用action属性接收 登录界面例子 在webroot下创建login.jsp和success.jsp login.jsp中加入表单: <form action="LoginActi ...
- Struts2学习笔记(五)——Action访问Servlet API
在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...
- struts2 action接收请求参数和类型转换
1,action接收请求参数 在struts2中action是什么?(struts2是一个mvc框架) V:jsp M:action C:action ...
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...
- Struts2 学习笔记(概述)
Struts2 学习笔记 2015年3月7日11:02:55 MVC思想 Strust2的MVC对应关系如下: 在MVC三个模块当中,struts2对应关系如下: Model: 负责封装应用的状态,并 ...
- 【Struts2学习笔记-3】常量配置
Struts2常量 配置Struts2常量值有3个地方,1)在struts.properties文件中配置常量:2)在web.xml文件中配置FileterDispatcher指定初始化参数来配置常量 ...
随机推荐
- 简单的线性回归问题-TensorFlow+MATLAB·
首先我们要试验的是 人体脂肪fat和年龄age以及体重weight之间的关系,我们的目标就是得到一个最优化的平面来表示三者之间的关系: TensorFlow的程序如下: import tensorfl ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十三)——SpringMVC入门程序(二)
1.非注解的处理器映射器和适配器 1.1非注解的处理器映射器 前面我们配置的org.springframework.web.servlet.handler.BeanNameUrlHandlerMapp ...
- Spring Boot 1.5.4集成Redis
本文示例源码,请看这里: 如何安装与配置Redis,请看这里 首先添加起步依赖: <dependency> <groupId>org.springframework.boot& ...
- Unity Shader入门教程(一)
参考文献:http://www.360doc.com/content/13/0923/15/12282510_316492286.shtml Unity Shader是着色器,将纹理.网格信息输入,得 ...
- ajax知识点总结
一.JSON JSON是JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数 ...
- Java面向对象之抽象类,接口
抽象类: 含有抽象方法的类被声明为抽象类 抽象方法由子类去实现 含有抽象方法的类必须被声明为抽象类 抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法 抽象方法: 声明而未被实现的 ...
- 使用xcrun打包iOS应用
使用xcrun打包iOS应用 通常打包采用xcodebuild和xcrun两个命令,xcodebuild负责编译,xcrun负责将app打成ipa. XCode 默认编译出来的是appName.a ...
- (转)B-树和B+树的应用:数据搜索和数据库索引
B-树 1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树: ⑴树中每个结点至多有m 棵子树: ⑵若根结点不是叶子 ...
- 将bbr功能合入到centos7.3
今天将bbr的算法合入到了centos7.3的内核,基线内核版本是3.10.0-514.el7.x86_64, 内核编译测试通过.感谢隆春和文洋的帮助,隆春是将bbr合入到了cgslv5版本. 这种反 ...
- [学习笔记] Splay Tree 从入门到放弃
前几天由于出行计划没有更博QwQ (其实是因为调试死活调不出来了TAT我好菜啊) 伸展树 伸展树(英语:Splay Tree)是一种二叉查找树,它能在O(log n)内完成插入.查找和删除操作.它是由 ...