Struts2接受参数

Struts2 是一个相当强大的Java Web开源框架,是一个基于POJO的Action的MVC Web框架。它基于当年的Webwork和XWork框架,继承其优点,同时做了相当的改进。Struts2现在在Java Web开发界的地位可以说是大红大紫,从开发人员的角度来分析,Struts2之所以能够如此的深入开发人员之心,与其优良的设计是分不开的。

Struts2他的优点,在我另一篇博客上面写到过,我们这里主要是讲一下从页面上取值,也就是接受参数

Struts2接受参数的方式有四种
1.使用Action的属性进行接受参数
2.使用DomainModel接受参数
3.使用ModelDriven接受参数
4.使用request接受参数

我相信大家对request接受参数都已经用的滚瓜烂熟了,我们这里不做讲解,我们在这里配置的相关环境都是不变的

第一步:创建web项目,搭建Struts2开发环境
第二步:在web.xml 进行struts2的过滤器的配置
第三步:创建stuts.xml 进行关系的映射
第四步:创建一个实体类Action,并继承com.opensymphony.xwork2.ActionSupport
第五步:创建相关方法
第六步:进行页面的编辑,
第七步:测试


下面直接上代码:
Struts的核心包
web.xml的配置:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

testaction类的创建:

import com.opensymphony.xwork2.ActionSupport;

public class testAction extends ActionSupport {
    //Action属性进取值
    //对属性 要进行生成get() set方法
    private String name;
    private Integer age;
    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 String Login(){
        System.out.println(name);
        System.out.println(age);
        //返回值 进行页面的跳转
        return "ok";
    }
}

struts.xml 配置

<!--声明xml的版本和文件编码格式-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
        <!-- struts2的action必须放在一个指定的包空间下定义 -->
    <package name="pk" extends="struts-default" namespace="/">
      <!-- 定义处理请求URL为login.action的Action -->
        <action name="Login" class="action.testAction">   
         <!-- 定义处理结果字符串和资源之间的映射关系 -->
            <result name="ok">/ok.jsp</result>
        </action>
    </package>

</struts>    

jsp页面的设计

 <body>
    <form action="Login!Login" method="post">
        用户名:<input type="text" name="name"> <br/><br/>
        年龄:<input type="text" name="age"><br/><br/>
            <input type="submit" value="提交"/>
    </form>
  </body>

这就是action属性进行取值


大家都知道Java是一种面向对象的一种语言,我们进行取值,我们可以通过进行面向对象进行处理 ,就是我们前面说的 DomainModel接受参数的方法进行接受参数,
在这里我们就只是修改一下Action
首先我们对接受的对象进行封装成一个实体类

public class UserInfo {
    private String name;
    private Integer age;
    public String getAge() {
        return age;
    }
    public void setId(String age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

testAction里面的变化

import com.opensymphony.xwork2.ActionSupport;

public class testAction extends ActionSupport {
    private UserInfo user;
    public UserInfo getUser() {
        return user;
    }
    public void setUser(UserInfo user) {
        this.user = user;
    }
    //定义前台请求的方法 进行数据的请求
    public String Login(){
        System.out.println(user.getName);
        System.out.println(user.getAge);
        //返回值 进行页面的跳转
        return "ok";
    }
}

页面不做任何改变

我们在这里讲说一下第三种接受参数了 ModeDriven,这是我个人比较建议的一种方法进行接受参数
这里注意一下 ,这里我们的还是需要定义实体类,但是在改变的地方在Action中

首先我们建立的Action不仅仅需要继承AcrtionSupport,而且还需要实现接口ModelDriver并且要实现里面的getModel()方法,在方法中返回你要的对象,其余地方不做任何改变

public class LoginAction extends ActionSupport implements ModelDriven<UserInfo>{
    private static final long serialVersionUID = 7199807303646261718L;
    //注意这里需要new一个对象
    private UserInfo user=new UserInfo();

    public String Login(){
        System.out.println(user.getName()+"=="+user.getPassword());
        return "ok";
    }
    @Override
    public UserInfo getModel() {
        // TODO Auto-generated method stub
        return user;
    }
}

在这里我们把接受参数的方法都提了一下,前面也说了,这里不对request取值的方法进行说明,我们建议用后面一种;

在这里可能有人有疑问了,如果我们的实体类是List的集合我们怎么去接受参数,在这里我们也进行提一下,这里直接上代码了

实体类:
userInfo 实体类:

public class UserInfo {
    private int id;
    private String name;
    private String password;

    private List<String> aihao;

    private List<Dome> listDome;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public List<String> getAihao() {
        return aihao;
    }
    public void setAihao(List<String> aihao) {
        this.aihao = aihao;
    }
    public List<Dome> getListDome() {
        return listDome;
    }
    public void setListDome(List<Dome> listDome) {
        this.listDome = listDome;
    }
}   

Dome实体类

public class Dome {
    private String name;
    private String age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }

}

Action中:

public class testAction extends ActionSupport implements ModelDriven<UserInfo>{
    private static final long serialVersionUID = 7199807303646261718L;

    private UserInfo user=new UserInfo();

    public String Login(){
        System.out.println(user.getName()+"=="+user.getPassword());
        //集合取值
        System.out.println(user.getAihao().get(0));
        System.out.println(user.getAihao().get(1));
        //集合对象取值
        System.out.println(user.getListDome().get(0).getName()+"=="+user.getListDome().get(1).getAge());
        return "ok";
    }
    @Override
    public UserInfo getModel() {
        // TODO Auto-generated method stub
        return user;
    }
}

页面:

  <body>
    <form action="Login!Login" method="post">
        用户名:<input type="text" name="name"> <br/><br/>
        年龄:<input type="text" name="password"><br/><br/>
        爱好1:<input type="text" name="aihao[0]"><br/><br/>
        爱好2:<input type="text" name="aihao[1]"><br/><br/>

        名字:<input type="text" name="listDome[0].name"> <br><br>
        年龄:<input type="text" name="listDome[1].age"/> <br><br>
        <input type="submit" value="提交"/>
    </form>
  </body>

这就是Struts的接受参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值