Struts中Action三种接收参数的方式?

前言:

前面已经有一篇随笔介绍了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;
        }
    }

    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";
        }
    }

    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;
        }
    }

  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传值双击debug</h2>
    <s:debug></s:debug>
    <!-- debug重要的strut2标签调试工具 -->
  </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的朋友些许借鉴!

  

时间: 2024-08-01 21:11:27

Struts中Action三种接收参数的方式?的相关文章

Struts中Action三种接收参数的方式

前言: 前面已经有一篇随笔介绍了Struts2的大概原理.本文就Struts2中Action与jsp页面进行数据对接时介绍几种常见方法! 值栈ValueStack 3个Action Action1 package com.gdufe.action; import com.opensymphony.xwork2.ActionSupport; /* * Action接收参数之后通过set方法赋给普通变量age,name; */ public class UserAction1 extends Act

C++中的三种继承方式

1,被忽略的细节: 1,冒号( :)表示继承关系,Parent 表示被继承的类,public 的意义是什么? 1 class Parent 2 { 3 4 }; 5 6 class Child : public Parent 7 { 8 9 }; 2,有趣的问题: 1,是否可以将继承语句中的 public 换成 protected 或者 private?如果可以,与 public 继承有什么区别? 3,有趣的尝试编程实验: 1 #include <iostream> 2 #include &l

Struts中Action&ActionForm

在Struts架构中,通常使用一种名为ActionForm的系统状态Bean,来实现应用系统的非持久性数据存储和维护功能.具体来说,这种类型的对象主要用于保存用户请求表单中的数据,并可保持其状态的连续性,即在不同的页面间传递这些数据. ActionForm Bean的运行处理过程如下: 控制器ActionServlet接收到一个客户端请求后,会将该请求委托给一个RequestProcessor对象进行处理.该对象是遵照配置文件struts-config.xml中与该请求匹配的<action>子

Struts之action的请求接受参数

1.Struts2 提供三种数据封装的方式 Action 本身作为model对象,通过成员setter封装 创建独立model对象,页面通过ognl表达式封装 使用ModelDriven接口,对请求数据进行封装 Action充当的角色既可以是Model也可以使Controler. 2.Action 本身作为model对象,通过成员setter封装,而且是必须要属性的setter方法,与getter并没有关系(属性驱动方式): 3.创建独立model对象,页面通过ognl表达式封装,必须要User

js oop中的三种继承方法

JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方法.(继承的两方,发生在两个类之间)> 一.通过object实现继承 1:定义父类 function Parent(){} 2:定义子类 funtion Son(){} 3:通过原型给Object对象添加一个扩展方法. Object.prototype.customExtend = function(p

.NET中的三种Timer的区别和用法(转)

最近正好做一个WEB中定期执行的程序,而.NET中有3个不同的定时器.所以正好研究研究.这3个定时器分别是:  //1.实现按用户定义的时间间隔引发事件的计时器.此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用.  System.Windows.Forms.Timer  // 2.提供以指定的时间间隔执行方法的机制.无法继承此类.  System.Threading.Timer  //3.在应用程序中生成定期事件.  System.Timers.Timer  这三个定时器位

MySQL buffer pool中的三种链

三种page.三种list.LRU控制调优 一.innodb buffer pool中的三种页 1.free page:从未用过的页 2.clean page:干净的页,数据页的数据和磁盘一致 3.dirty page:脏页 SQL执行需求: 1.找free页 2.刷新脏页 1.这个页不是热的数据页(刷冷页) 2.这个页最早修改时间(刷修改时间比较早的页,有可能是热页),方便日志文件的覆盖 3.覆盖冷的clean页 为了实现上述需求,innodb用到链表技术(每种链表一种作用,链的存在意义是为了

Oracle中的三种Join 方式

基本概念 Nested loop join: Outer table中的每一行与inner table中的相应记录join,类似一个嵌套的循环. Sort merge join: 将两个表排序,然后再进行join. Hash join: 将两个表中较小的一个在内存中构造一个Hash 表(对Join Key),扫描另一个表,同样对Join Key进行Hash后探测是否可以join,找出与之匹配的行. 一张小表被hash在内存中.因为数据量小,所以这张小表的大多数数据已经驻入在内存中,剩下的少量数据

Java三大框架之——Hibernate中的三种数据持久状态和缓存机制

Hibernate中的三种状态   瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过Session持久化操作,缓存中存在这个对象的数据为持久状态并且数据库中存在这个对象对应的数据为持久状态这个时候有OID. 游离状态:当Session关闭,缓存中不存在这个对象数据而数据库中有这个对象的数据并且有OID为游离状态. 注:OID为了在系统中能够找到所需对象,我们需要为每一个对象分配一个