Struts2(6)——Action传递参数

原创 2017年09月12日 20:17:22

1. 将参数作为Action的成员变量


在Action中给定一个私有属性,并实现其set、get访问器,然后即可直接接收请求中的参数。

package com.imm.demo;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import java.util.Map;

public class Demo8Action extends ActionSupport {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String execute() throws Exception {
        System.out.println("name:"+name);
        return SUCCESS;
    }
}

能够这样实现的原因是在于,Action是线程安全的。而Servlet时代则不可行,因为Servlet是在客户端第一次请求某个Servlet时根据web.xml实例化的,在后续无论多少个请求访问该Servlet,都不会再实例化,而是访问同一个Servlet,因此Servlet只能在方法中接收参数。

2.通过某个实体对象

创建实体类,然后创建Action的私有属性为该实体类的实例。如下:

package com.xiaoyin.demo;

import com.opensymphony.xwork2.ActionSupport;
import com.xiaoyin.entity.User;

public class Demo9Action extends ActionSupport {

    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(user);
        return SUCCESS;
    }
}
package com.xiaoyin.entity;

import java.util.Date;

public class User {
    private String name;
    private int age;
    private Date birthday;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                '}';
    }
}
<%--
  Created by IntelliJ IDEA.
  User: ASCEND
  Date: 2017/9/10
  Time: 1:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" ;charset="utf-8"/>
    <title>hello</title>
</head>
<body>
<h1>hello</h1>
<form action="${pageContext.request.contextPath}/Demo9Action.action" method="get">
    名字:<input type="text" name="user.name"><br/>
    年龄:<input type="text" name="user.age"><br/>
    出生日期:<input type="text" name="user.birthday"><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

3.模型驱动传参

创建实体类的实例作为Action的成员变量,Action实现ModelDriven接口,并重写该接口方法,成员对象须被初始化,以免重写的方法返回null值。

package com.xiaoyin.demo;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.xiaoyin.entity.User;

public class Demo10Action extends ActionSupport implements ModelDriven<User> {

    private User user=new User();

    @Override
    public String execute() throws Exception {
        System.out.println(user);
        return SUCCESS;
    }

    public User getModel() {
        return user;
    }
}
<%--
  Created by IntelliJ IDEA.
  User: ASCEND
  Date: 2017/9/10
  Time: 1:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" ;charset="utf-8"/>
    <title>hello</title>
</head>
<body>
<h1>hello</h1>
<form action="${pageContext.request.contextPath}/Demo10Action.action" method="get">
    名字:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    出生日期:<input type="text" name="birthday"><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

4.集合类型的参数封装

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.xiaoyin.entity.User;

import java.util.List;

public class Demo11Action extends ActionSupport {

    private List<String> list;

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    @Override
    public String execute() throws Exception {
        System.out.println("list:"+list);
        return SUCCESS;
    }

}

将集合类型作为Action的一个属性,然后jsp页面

<%--
  Created by IntelliJ IDEA.
  User: ASCEND
  Date: 2017/9/10
  Time: 1:24
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" ;charset="utf-8"/>
    <title>hello</title>
</head>
<body>
<h1></h1>
<form action="${pageContext.request.contextPath}/Demo11Action.action" method="post">
    名字:<input type="text" name="list"><br/>
    年龄:<input type="text" name="list[1]"><br/>
    地址:<input type="text" name="list[3]"><br/>
    <input type="submit" value="提交">
</form>
</body>
</html>

如果提交Map类型的数据,那么jsp页面表单input的name应该是

name=属性名['键']
版权声明:虽然是原创,但大多是笔记性质,想转随意

Struts2 action之间相互跳转传递参数

今天遇到一个问题,在Webwork 2.2里面给一个Action的result传多个参数: 原先配置如下 action name="blahblahAction" class="blahAc...
  • zhujiaxing666666
  • zhujiaxing666666
  • 2013年01月13日 18:01
  • 20019

struts2中action接收参数的3种方法

Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action...
  • nthack5730
  • nthack5730
  • 2015年07月09日 10:17
  • 18039

Struts2三种传参方式(从jsp页面传到Action)

struts.xml代码: "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://stru...
  • yyhjava
  • yyhjava
  • 2016年06月17日 10:11
  • 1334

struts2——action返回参数的方法总结

一·get方式 对比action接受参数的set方法,其实就是一个道理,这也是struts2的工作机制,当页面传递参数到action,struts2会自动调用set方法为属性设值;当action返回...
  • u012788601
  • u012788601
  • 2017年01月07日 19:46
  • 1290

day28_struts2(全天)のPPT学习——05 Action接受请求参数.ppt

day28_struts2(全天)のPPT学习——05 Action接受请求参数.pptAction接受请求参数Struts2 Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求...
  • zp357252539
  • zp357252539
  • 2015年03月17日 18:37
  • 413

struts2——文件的下载以及在Action中获取请求参数的方式

前一天,上传了关于struts2文件的下载方式,今天正好补上关于struts2文件下载的方式。 1、开发环境 jdk1.7.0-51 myEcplise10 struts-2.3.32 2.web....
  • wangheng_2017
  • wangheng_2017
  • 2017年05月10日 16:13
  • 527

Struts2 学习笔记 —— 10 —— Action接收参数时的中文乱码问题

在Struts接收参数时,如果输入中文,那么可能就会出现乱码问题     首先写一个index.jsp Insert title here 使用DomainM...
  • rnclcl
  • rnclcl
  • 2014年01月20日 16:01
  • 1442

Struts2 学习笔记 —— 09 —— Action接收参数(3)

Action接收参数的第三种方式是ModelDriven,模型驱动,但这种方式并不常用   struts.xml文件与之前没有变化 ...
  • rnclcl
  • rnclcl
  • 2014年01月17日 10:50
  • 477

Struts2关于Action的系统训练6关于action接收参数的三种方法

关于Struts2种Action接收参数的理解
  • u012446233
  • u012446233
  • 2014年12月16日 15:41
  • 621

struts2中的Action接收表单传递过来参数的3种方法

如,登陆表单login.jsp: 用户名: 密 码: 1.在Action类中定义表单属性,两者属性名称必须一致。提供setter,getter...
  • angiwit
  • angiwit
  • 2014年03月01日 16:18
  • 2965
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2(6)——Action传递参数
举报原因:
原因补充:

(最多只允许输入30个字)