使用IDEA学习Struts2框架 (二)Action与Form表单处理

本文详细讲解了Struts2框架中Action类的作用,如何处理表单输入,包括简单的获取输入、使用模型类、创建Action处理表单提交,并介绍了处理表单输入错误的方法。通过实例展示了如何创建Action类,使用Java模型类存储表单输入,以及在struts.xml中配置映射关系。
摘要由CSDN通过智能技术生成

1.    Action类

Action类在MVC模式中发挥着控制器(Controller)的作用。Action类响应用户的动作,执行业务逻辑或调用其他类来执行业务逻辑,然后返回一个result用来告诉Struts应该呈现哪个视图。

Struts2的Action类常常继承由Struts2框架提供的ActionSupport类,该类提供了一些常见动作的默认实现,如execute、input等,还实现了一些有用的Struts2接口。当你的Action类继承ActionSupport时,它既可以重载默认实现,也可以继承默认实现。在上一章的例子中,HelloWorldAction中的execute()方法就是我们想要这个控制器做的事情,来响应hello.action。

2.    在Action类中处理表单输入

2.1    简单的获取输入

Action的最常见职责之一就是处理用户在表单中的输入,让处理结果可以在视图页面中显示。例如,我们在HelloWorld.jsp中想要显示一个个性化的hello,在index.jsp中我们要添加一个表单:

<s:form action="hello">
  <s:textfield name="userName" label="Your name" />
  <s:submit value="Submit" />
</s:form> 

注意textfield的name属性的值"userName"。当用户点击该表单的提交按钮时,hello action将会被执行。该表单域的值将会被提交到Struts2的Action类,也就是HelloWorldAction。为了让HelloWorldAction类能够自动地接收到userName的值,该类必须有一个public的方法setUserName(符合JavaBean规范)。如此,在提交的时候,框架就会自动调用serUserName()方法,将表单中的value值作为参数传入,以此来设置userName的值。

HelloWorldAction中添加setter方法:

    private String userName;
    public void setUserName(String username) {
        this.userName = username;
    }

    public String getUserName() {
        return userName;
    } 

为了让MessageStore中存储的message个性化,在HelloWorldAction的execute()方法中添加以下代码段:

    public String execute() throws Exception {
        messageStore = new MessageStore();
        if (userName != null) {
            messageStore.setMessage("Hello,"+userName);
        }
        return SUCCESS;
    }
如果MessageStore类中没有setter方法,那么添加一个setMessage方法:
    public void setMessage(String message) {
        this.message = message;
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值