zoukankan      html  css  js  c++  java
  • Struts2 Action类的创建以及参数传递以及接收

    一、Struts中Action得创建方式

    1,直接创建一个简单的Action类

    添加Struts.xml,配置转发方法返回转发的页面。

    2,实现一个Action类

    Strust.xml配置对应的Url转发映射。

    3,继承一个ActionSupport类

    struts.xml配置文件的内容如下:

    二、Struts中Action获取Servlet中的API,并通过servlet的域对象进行存储值操作

    1,通过ActionContext上下文对象来获取request域,session域,application域

    struts.xml配置文件配置内容:

    转发页面内容:

    Action获取Servlet中的API,并通过servlet的域对象进行存储值操作

    2,通过servletActionContext上下文对象来获取request域,session域,application域

    strust.xml配置文件

    转发页面

    3,Action类通过实现ServletRequestAware, ServletContextAware上下文对象来获取request域,session域,application域

    Struts.xml 配置文件如下:

    jsp转发配置页面

    三、Struts中Action中获取页面传递过来的参数的三种方式

    1,通过Action类的属性来获取相应的参数值

    package com.java.test.param.Action;
    import java.util.Date;
    public class ParamAction {
    private String name;
    private Integer age;
    private Date birthday;
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Integer getAge() {
    return age;
    }
    public void setAge(Integer age) {
    this.age = age;
    }
    public Date getBirthday() {
    return birthday;
    }
    public void setBirthday(Date birthday) {
    this.birthday = birthday;
    }
    public String test() {
    System.out.println("name:"+name);
    System.out.println("age:"+age);
    System.out.println("birthday:"+birthday);
    return "test";
    }
    }

     struts.xml配置页面

    form.jsp

    welcome.jsp

    2,通过Action类的对象属性来获取相应的参数值

    #user.java
    package com.java.test.param.Action;

    import java.util.Date;

    public class User {

    private String name;
    private Integer age;
    private Date birthday;

    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public Integer getAge() {
    return age;
    }
    public void setAge(Integer age) {
    this.age = age;
    }
    public Date getBirthday() {
    return birthday;
    }
    public void setBirthday(Date birthday) {
    this.birthday = birthday;
    }



    }

    #Param1Action .java
    package com.java.test.param.Action;

    public class Param1Action {
    private User user;

    public User getUser() {
    return user;
    }

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

    public String test() {
    return "test";
    }



    }

    strust.xml配置文件

    form1.jsp

    welcome1.jsp

    3,通过实现ModelDriven类的来获取相应的参数值

    #Param3.java
    package com.java.test.param.Action;

    import com.opensymphony.xwork2.ModelDriven;

    public class Param3 implements ModelDriven{
    private User user = new User();

    @Override
    public User getModel() {
    // TODO Auto-generated method stub return user;
    }

    public String test() {
    return "test";
    }


    }

     struts.xml

    form2.jsp

    welcome2.jsp

    四、Struts中如何传递list,map参数

    #Param4Action .java
    package com.java.test.param.Action;

    import java.util.List;
    import java.util.Map;

    public class Param4Action {
    private List list;
    private Map<String,String> map;

    public List getList() {
    return list;
    }
    public void setList(List list) {
    this.list = list;
    }
    public Map<String, String> getMap() {
    return map;
    }
    public void setMap(Map<String, String> map) {
    this.map = map;
    }

    public String test() {
    return "test";
    }

    }

    form3.jsp

    welcome3.jsp

    总结:1,创建Action有三种方式,每一种都有对应的好处,建议使用第二种或者第三种,这种方式能够继承或者实现父类,从而可以复用父类的一些东西。

                2,获取servlet Api,建议使用第二种方式,和servlet的方式类似。但struts中不建议这样来获取参数或设置对象域。

                3, Action类中接收参数的三种方式,第一种的话,很零散,操作数据库还得进行封装类,第二种方式,可以直接封装好类,这种方式可以,第三种,这种方式也可以,就是               每次只能实现一个bean类,从而只能获取一个bean。多个bean的话不太好解决。

                最后一个就是传递list参数和map参数,list就是页面上得有多个对应的list,map必须指定对应的key,不然不知道是哪一个key需要存值。

       

  • 相关阅读:
    AspDotNetStorefront客户化开始
    "超时时间已到。在操作完成之前超时时间已过或服务器未响应。"另一个原因
    转:只打开一个窗口和关闭窗口而不出现提示
    .net 数据格式设置
    SQLServer导出数据表中数据的存储过程
    游标、临时表、嵌套游标使用一列
    转:将图片转换成16进制的代码写入文本
    根据文件后缀返回Http的ContentType类型的函数
    正确配置p6spy后没有日志输出的一个可能的原因
    C99 声明 + 表达式 + 词法 部分Grammar
  • 原文地址:https://www.cnblogs.com/Hackerman/p/11225112.html
Copyright © 2011-2022 走看看