利用struts2框架进行将页面请求的参数封装有三种方法

第一种(不推荐)

就是动作类和bean中结合在一起,这样方法比较简单,但是很混乱。

代码:

  1. package com.example.action;
  2.  
  3. import com.opensymphony.xwork2.ActionSupport;
  4.  
  5. public class Person extends ActionSupport{
  6.  
  7. private String username;
  8. private String password;
  9. private String nickname;
  10. public String getUsername() {
  11. return username;
  12. }
  13.  
  14. //动作的方法
  15. public String execute() throws Exception {
  16. System.out.println(username+","+password+","+nickname);
  17. return NONE;
  18. }
  19. public void setUsername(String username) {
  20. this.username = username;
  21. }
  22. public String getPassword() {
  23. return password;
  24. }
  25. public void setPassword(String password) {
  26. this.password = password;
  27. }
  28. public String getNickname() {
  29. return nickname;
  30. }
  31. public void setNickname(String nickname) {
  32. this.nickname = nickname;
  33. }
  34. }
  1. <action name="act1" class="com.example.action.Person">
  2. <!-- 静态注入 相当于调用action动作类的get 和set 方法-->
  3.  
  4. <param name="nickname">游客</param>
  5. </action>

第二种将动作类与bean中分离

  1. package com.example.domain;
  2. /**
  3. * 这是模型
  4. * @author sheldonLee
  5. *
  6. */
  7. public class Student {
  8.  
  9. private String username;
  10. private String password;
  11. private String nickname;
  12. public String getUsername() {
  13. return username;
  14. }
  15. public void setUsername(String username) {
  16. this.username = username;
  17. }
  18. public String getPassword() {
  19. return password;
  20. }
  21. public void setPassword(String password) {
  22. this.password = password;
  23. }
  24. public String getNickname() {
  25. return nickname;
  26. }
  27. public void setNickname(String nickname) {
  28. this.nickname = nickname;
  29. }
  30. @Override
  31. public String toString() {
  32. return "Student [username=" + username + ", password=" + password
  33. + ", nickname=" + nickname + "]";
  34. }
  35.  
  36. }
  1. package com.example.action;
  2.  
  3. import com.example.domain.Student;
  4.  
  5. /**
  6. * 这是动作
  7. * @author sheldonLee
  8. *
  9. */
  10. public class StudentAction {
  11.  
  12. private Student student;
  13.  
  14. public Student getStudent() {
  15. return student;
  16. }
  17.  
  18. public void setStudent(Student student) {
  19. this.student = student;
  20. }
  21.  
  22. public String save(){
  23. //将表单的数据封装到模型对象中
  24. //调用service 将student中的数据保存到数据库中
  25. System.out.println(student.toString());
  26. return "none";
  27. }
  28. }
  1. <body>
  2. <form action="${pageContext.request.contextPath }/act2" method="post">
  3. 用户名:<input type="text" name="student.username"/><br/>
  4. 密 码:<input type="password" name="student.password"/><br/>
  5. 昵 称: <input type="text" name="student.nickname"/><br/>
  6. <input type="submit" value="注册"/><br/>
  7. </form>

第三种是驱动模型(动作和bean也是分开的)ModelDriven

  1. package com.example.domain;
  2. /**
  3. * 这是Customer模型
  4. * @author sheldonLee
  5. *
  6. */
  7. public class Customer {
  8. private String username;
  9. private String password;
  10. private String nickname;
  11. public String getUsername() {
  12. return username;
  13. }
  14. public void setUsername(String username) {
  15. this.username = username;
  16. }
  17. public String getPassword() {
  18. return password;
  19. }
  20. public void setPassword(String password) {
  21. this.password = password;
  22. }
  23. public String getNickname() {
  24. return nickname;
  25. }
  26. public void setNickname(String nickname) {
  27. this.nickname = nickname;
  28. }
  29. @Override
  30. public String toString() {
  31. return "Customer [username=" + username + ", password=" + password
  32. + ", nickname=" + nickname + "]";
  33. }
  34.  
  35. }
  1. package com.example.action;
  2.  
  3. import com.example.domain.Customer;
  4. import com.opensymphony.xwork2.ModelDriven;
  5.  
  6. public class CustomerAction implements ModelDriven<Customer>{
  7.  
  8. //动作类关联一个Customer 对象
  9. //为了getModel() 这个不会返回为空 所以要是实例化一个对象
  10. private Customer customer= new Customer();
  11.  
  12. public Customer getCustomer() {
  13. return customer;
  14. }
  15.  
  16. public void setCustomer(Customer customer) {
  17. this.customer = customer;
  18. }
  19.  
  20. public String save(){
  21. System.out.println(customer);
  22. return "none";
  23. }
  24. //调用动作方法前,框架会先调用这个方法
  25. //这里不会实例化对象
  26. public Customer getModel() {
  27. // TODO Auto-generated method stub
  28. return customer;
  29. }
  30. }
  1. <form action="${pageContext.request.contextPath }/act2" method="post">
  2. <!--参数中省掉了类名 -->
  3. 用户名:<input type="text" name="username"/><br/>
  4. 密 码:<input type="password" name="password"/><br/>
  5. 昵 称: <input type="text" name="nickname"/><br/>
  6. <input type="submit" value="注册"/><br/>
  7. </form>

主要注意两点 动作类要实现ModelDriver的接口,动作类中要关联对象要注意要实例化

struts2封装请求参数的更多相关文章

  1. 十一、Struts2封装请求参数的方式

    十一.Struts2封装请求参数的方式 方式一.Action 本身作为model对象,通过成员setter封装(一个名字为params的拦截器干的) 注意:表单中的名称要和动作类中的名称一致(这是必须 ...

  2. struts2之请求参数接收

    struts2之请求参数接收 1. 采用基本类型接受请求参数(get/post)在Action类中定义与请求参数同名的属性,struts2便能自动接收请求参数并赋予给同名的属性.请求路径:http:/ ...

  3. struts2接受请求参数

    https://blog.csdn.net/y249839817/article/details/77702745 https://blog.csdn.net/nthack5730/article/d ...

  4. Struts2接受请求参数三种常用方法

    一 接受请求参数主要有三种:属性驱动 对象驱动 模型驱动<model Driven> 方式1:在Action中接收请求参数不需要使用request对象,在Action中定义与请求参数相同名 ...

  5. struts2获取请求参数的三种方式及传递给JSP参数的方式

    接上一篇文章 package test; import com.opensymphony.xwork2.ActionSupport; import javax.servlet.http.*; impo ...

  6. 利用Common-BeanUtils封装请求参数

    一.BeanUtils介绍 commons-beanutils是利用反射机制对JavaBean的属性进行处理,提供了对于JavaBean的各种处理方法.众所周知,一个JavaBean通常包含了大量的属 ...

  7. Struts2中请求参数的接收方式和ModelDriven机制及其运用

    odelDriven 为什么需要ModelDriven 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar ...

  8. struts2获得请求参数的方式

    1.用Action的属性接收参数 2.用DomainModel(域模型)接收参数 3.用ModelDriven接收参数 使用这种方式接受参数需要实现ModelDriven接口,

  9. asp.net中Request请求参数的自动封装

    这两天在测一个小Demo的时候发现一个很蛋疼的问题----请求参数的获取和封装,例: 方便测试用所以这里是一个很简单的表单. <!DOCTYPE html> <html xmlns= ...

随机推荐

  1. bat批处理文件自动判断系统版本信息(转载)

    @echo offver|find "Version 5.0" >nulif not errorlevel 1 goto Windows2Kver|find "版本 ...

  2. 【OC底层】KVO原理

    KVO的原理是什么?底层是如何实现的? KVO是Key-value observing的缩写. KVO是Objective-C是使用观察者设计模式实现的. Apple使用了isa混写(isa-swiz ...

  3. MongoDB的聚合操作以及与Python的交互

    上一篇主要介绍了MongoDB的基本操作,包括创建.插入.保存.更新和查询等,链接为MongoDB基本操作. 在本文中主要介绍MongoDB的聚合以及与Python的交互. MongoDB聚合 什么是 ...

  4. Python点滴记录-day-01

    python基础 - 基础 1.第一句python - 后缀名是可以可任意? - 导入模块时,如果不是.py文件 ==>以后文件后缀名是.py 2.两种执行方式 python解释器 py文件路径 ...

  5. C语言学习记录_2019.02.08

    \n:换行:   \t:制表符,相当于大空格: a[5]={2};<------->a[5]={2,0,0,0,0}; 数组初始化的方法:a[5]={0};即全部初始化为0: 数组初始化的 ...

  6. 《记忆匣子》——网络编程jsp网页制作复习习笔记1

    内容都在图里 哈哈哈 <%@ page language="java" contentType="text/html; charset=utf-8" pa ...

  7. P2939 [USACO09FEB]改造路Revamping Trails

    P2939 [USACO09FEB]改造路Revamping Trails 同bzoj2763.不过dbzoj太慢了,bzoj又交不了. 裸的分层图最短路. f[i][j]表示免费走了j条路到达i的最 ...

  8. Python函数之总结

    ''' 1.什么是函数 函数就是具备某一特定功能的工具 2.为什么用函数 减少重复代码 增强程序的扩展性 增强可读性 3.如何用函数 1.函数的使用原则:先定义后调用(*****) 定义阶段:只检测语 ...

  9. $.post(url,[data],[callback],'json')

    $.post(url,[data],[callback],'json')这个写法来做到用post方法传递数据,并取加回json型数据.如果我要取回的数据类型是xml的,就可以写成$.post(url, ...

  10. asp.net core 自定义中间件和service

    首先新建项目看下main方法: public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel ...