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= ...
随机推荐
- bat批处理文件自动判断系统版本信息(转载)
@echo offver|find "Version 5.0" >nulif not errorlevel 1 goto Windows2Kver|find "版本 ...
- 【OC底层】KVO原理
KVO的原理是什么?底层是如何实现的? KVO是Key-value observing的缩写. KVO是Objective-C是使用观察者设计模式实现的. Apple使用了isa混写(isa-swiz ...
- MongoDB的聚合操作以及与Python的交互
上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...
- Python点滴记录-day-01
python基础 - 基础 1.第一句python - 后缀名是可以可任意? - 导入模块时,如果不是.py文件 ==>以后文件后缀名是.py 2.两种执行方式 python解释器 py文件路径 ...
- C语言学习记录_2019.02.08
\n:换行: \t:制表符,相当于大空格: a[5]={2};<------->a[5]={2,0,0,0,0}; 数组初始化的方法:a[5]={0};即全部初始化为0: 数组初始化的 ...
- 《记忆匣子》——网络编程jsp网页制作复习习笔记1
内容都在图里 哈哈哈 <%@ page language="java" contentType="text/html; charset=utf-8" pa ...
- P2939 [USACO09FEB]改造路Revamping Trails
P2939 [USACO09FEB]改造路Revamping Trails 同bzoj2763.不过dbzoj太慢了,bzoj又交不了. 裸的分层图最短路. f[i][j]表示免费走了j条路到达i的最 ...
- Python函数之总结
''' 1.什么是函数 函数就是具备某一特定功能的工具 2.为什么用函数 减少重复代码 增强程序的扩展性 增强可读性 3.如何用函数 1.函数的使用原则:先定义后调用(*****) 定义阶段:只检测语 ...
- $.post(url,[data],[callback],'json')
$.post(url,[data],[callback],'json')这个写法来做到用post方法传递数据,并取加回json型数据.如果我要取回的数据类型是xml的,就可以写成$.post(url, ...
- asp.net core 自定义中间件和service
首先新建项目看下main方法: public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel ...