前言:

前面已经有一篇随笔介绍了Struts2的大概原理。本文就Struts2中Action与jsp页面进行数据对接时介绍几种常见方法!

  1. 值栈ValueStack

  2. 3个Action

    Action1

    package com.gdufe.action;import com.opensymphony.xwork2.ActionSupport;/** Action接收参数之后通过set方法赋给普通变量age,name;*/
    public class UserAction1 extends ActionSupport{private int age;private String name;public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String execute(){return SUCCESS;}public String test(){System.out.println(age +"|"+ name);return SUCCESS;}
    }

    View Code

    Action2

    package com.gdufe.action;import com.gdufe.pojo.User;
    import com.opensymphony.xwork2.ActionSupport;/** Action接收参数之后赋给引用对象“user”,内部是set方法赋值*/
    public class UserAction2 extends ActionSupport {private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}public String test(){System.out.println(user.getName() + "|" + user.getAge());return "success";}
    }

    View Code

    Action3

    package com.gdufe.action;import com.gdufe.pojo.User;
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;public class UserAction3 extends ActionSupport implements ModelDriven<User> {private User user = new User();public String test(){System.out.println(user.getName() + "|" + user.getAge());return "success";}public User getModel() {return user;}
    }

    View Code

  3. 2个页面

index.jsp

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body>

    <h2>Action传值测试</h2>
    <a href="userAction1!test?age=8&name=admin">test1:Attribution</a> <br>
    <a href="userAction2!test?user.age=8&user.name=admin">test2:JavaBean</a> <br>
    <a href="userAction3!test?age=8&name=admin">test3:ModelDriven</a> <br>

  </body>
</html>

    success.jsp

  

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'index.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"></head><body><h2>Action传值双击debug</h2><s:debug></s:debug>  <!-- debug重要的strut2标签调试工具 --></body>
</html>

  1. 1个struts.xml配置文件

    

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- devMode设置为开发模式   --><constant name="struts.devMode" value="true" /><package name="default" extends="struts-default"><!-- 注:因为Action采用DMI方式,故不需要指明method 以及 ‘result’ --><action name="userAction1" class="com.gdufe.action.UserAction1" ><result>/success.jsp</result></action><action name="userAction2" class="com.gdufe.action.UserAction2" ><result>/success.jsp</result></action><action name="userAction3" class="com.gdufe.action.UserAction3" ><result>/success.jsp</result></action></package></struts>

  

  运行结果:

对应Action1——------------------*-------------------------

  对应Action2——------------------*-------------------------

  对应Action3——------------------*-------------------------

注意:新手的话请勿按部就班,因为还有初始配置没有说明,比如jar包及web.xml配置。详细配置自己读manual帮助文档或者上网参考!

==============================

结语:近期在接手Web开发时,数据对接不熟练;鉴于此,才再次翻起struts2的一些基础知识加深理解。希望能给有打算从事Java的朋友些许借鉴!

  

转载于:https://www.cnblogs.com/SeaSky0606/p/4694777.html

Struts中Action三种接收参数的方式?相关推荐

  1. Struts2中Action的属性接收参数

    Struts2中Action的属性接收参数,有三种传递并接收参数的方式,第一种是在Action添加成员属性接收参数,第二种是域模型,就是利用对象域来进行传递和接收参数,第三种是ModelDriven接 ...

  2. struts中action与页面之间的传值方式

    1.默认配置下的excute方法传值 如何把登陆页面中的用户名传递到登录成功的页面中呢? 有三种方式, 1,使用默认的action的传递方式. 2,自定义一个vo,在action中使用这个vo 3,使 ...

  3. winform 填充圆形 锯齿_Qt项目中,三种图形渐变填充方式详细总结

    总第40篇 本文主要详细梳理了Qt项目开发过程中,对图形的三种渐变填充方式,以便后面参考. 在Qt中,目前支持三种渐变填充方式,这三种方式都是QGradient的子类,它可以与画刷 QBrush组合使 ...

  4. vue 如何将参数放到连接上_通过Vue路由传参的两种方式及Vue组件中接收参数的方式...

    1. Vue传参方式 1.1 通过动态路由传参 我们经常需要把某种模式匹配到的所有路由,全都映射到同个组件.例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染.那 ...

  5. C#中的三种委托方式:Func委托,Action委托,Predicate委托

    C#中的三种委托方式:Func委托,Action委托,Predicate委托. Func,Action,Predicate全面解析 首先来说明Func委托,通过MSDN我们可以了解到,Func委托有如 ...

  6. python中什么是可变参数_详解Python的三种可变参数

    详解Python的三种可变参数 可变参数 可变参数应该最简单,在C/C++和Java等语言中都有,就是用*号来表示,例如 def testArg(*arg) 你可以传入任意多个元素(包括0)到参数中, ...

  7. Vue中的三种Watcher

    Vue中的三种Watcher Vue可以说存在三种watcher,第一种是在定义data函数时定义数据的render watcher:第二种是computed watcher,是computed函数在 ...

  8. 四旋翼飞行器12——飞控接收机的三种接收模式

    四旋翼飞行器12--飞控接收机的三种接收模式 文章目录 四旋翼飞行器12--飞控接收机的三种接收模式 一.PWM型 二.PPM型 三.SBUS 无线遥控就是利用高频无线电波实现对模型的控制.如天地飞的 ...

  9. Oracle的join默认为,Oracle中的三种Join方法详解

    这里将为大家介绍Oracle中的三种Join方法,Nested loop join.Sort merge join和Hash join.整理出来以便帮助大家学习. 基本概念 Nested loop j ...

最新文章

  1. 2022-2028年中国内衣用热熔胶膜行业发展现状调查及市场分析预测报告
  2. NYOJ 453 小珂的烦恼
  3. NETCORE openSUSE docker 安装
  4. HDFS High Availability体系介绍(Using the Quorum Journal Manager)
  5. 机器学习---knn之价格预测
  6. WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件
  7. 纯IPv6环境App适配的坑
  8. 跨服务器 快速 导入数据表记录 Insert into SELECT
  9. Bash常用快捷键及其作用
  10. SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚
  11. spark broadcast的TorrentBroadcast实现
  12. 数据挖掘项目:银行信用评分卡建模分析(上篇)
  13. gulp——用自动化构建工具增强你的工作流程
  14. sql判断为0_SQL简单语义分析概述
  15. DAX基础1:快速熟悉DAX的使用环境之Power BI
  16. 在线文档方案---Google docs
  17. 小学生打扫计算机教室的简报,简报第33期:我校开展“清扫校园”卫生大扫除活动...
  18. 小锦的软件评测师备考笔记
  19. python语言进行生日悖论分析--随机试验方法
  20. zxing扫描条形码 ios

热门文章

  1. 帧大小超过交换机mtu_tcpip – UDP中的MTU如何为65535,但以太网不允许超过1500字节的帧大小...
  2. python中print怎么用_python的print怎么用
  3. 帆软报表多行多条数据写入表_在线报表FineReport中多数据集如何实现层式报表...
  4. 思科网络基础课件_上海思科CCNA培训、思科网络工程师培训
  5. oracle 定时清理表数据,关于Oracle存储过程和调度器实现自动对数据库过期数据清除的问题...
  6. batchnorm pytorch_GitHub趋势榜第一:TensorFlow+PyTorch深度学习资源大汇总
  7. c语言高函数正确形式,计算机二级C语言考点解析:函数
  8. html调用deeplink,如何优雅地从浏览器打开本地应用deeplink
  9. js javascript UTF-8 GB2312编码转换
  10. 公众平台模板消息所在行业_微信公众号模板消息功能怎么快速推送?