Struts2中的Action对象

Action对象

Action介绍

Action充当MVC模式的控制器,响应用户操作,执行业务逻辑(或者调用其他类来执行),然后返回一个结果,告诉struts所要呈现的页面。
        Struts2 Action类通常扩展ActionSupport类,它由Struts2框架提供。类ActionSupport为常见的操作(执行,输入等)提供默认实现。例如execute方法。

Action处理表单输入

Action类最常见的职责之一是处理表单的用户输入,然后使处理的结果用于视图页面。表单中的数据会自动注入到Action对象中的对应属性,它与Spring框架中的IOC注入原理相同,通过Action对象提供的setter()方法进行注入。例如创建UserAction类,并提供一个username属性。关键代码如下:

public class UserAction extends ActionSupport{
		private String username;
		//为username提供setter方法
		public void setUsername(String username){
				this.username=username;
		}
		//为username提供getter方法
		public String getUsername(){
				return username;
		}

		public String excute(){
				return SUCCESS;
		}
}

Action的基本流程

(1)当浏览器向Web容器发送一个HTTP请求时,Web容器就会调用Struts2过滤器的doFilter()方法。
(2)Struts2接受HTTP请求,通过Struts2的内部处理机制就会判断这个请求是否与某个Action对象匹配。
(3)找到匹配的Action,就会调用对象的execute()方法,并根据结果反回相应的值。
(4)Struts2通过Action的返回值查找返回值所映射的页面。
(5)通过一定的视图回应给浏览器。
备注:在Struts2框架中,一个*.action请求的反回视图由Action对象决定。事实上,方法是通过查找反回的字符串对应的匹配项确定反回的视图,例如Action中的execute()方法反回字符串success,那么Struts2就会在配置文件中查找名为success的配置项,并反回这个配置项所对应的视图。

动态Action

        Action默认使用execute()方法来处理浏览器的请求,但是仅通过execute方法只适合比较单一的业务逻辑操作,在实际项目开发中业务请求类型多种多样,仅使用execute方法会使处理方式过于复杂。
        在Struts2框架提供了Dynamic Action这样一个概念,称为动态Action,通过动态请求Action对象中的方法来实现某一业务逻辑的处理。例如在配置文件中配置了userAction,请求其中的add()。

动态Action应用实例

(1)创建动态Web项目,将类库文件添加到WEB-INF目录下的lib文件夹中,然后在web.xml文件中注册Struts2提供的过滤器。
(2)创建名为UserAction的Action对象,并在其中分别编写add()和update()方法,用于处理添加和更新用户信息的请求并将请求反回到相应的页面。

package com.yy;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

	private String info;
	public String add() throws Exception{
		setInfo("添加用户信息!");
		return "add";
	}
	public String update() throws Exception{
		setInfo("修改用户信息!");
		return "update";
	}
	
	public void setInfo(String info) {
		this.info=info;
		
	}
	public String getInfo() {
		return info;
	}
}

(3)创建struts.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
	<!-- 声明包 -->
    <package name="user" extends="struts-default">
        <!-- 定义action -->
        <action name="userAction_*" class="com.yy.UserAction" method="{1}">
        	<!-- 定义处理成功后映射的页面 -->
            <result name="add">/user_add.jsp</result>
            <result name="update">/user_update.jsp</result>
            
            <allowed-methods>add,update</allowed-methods><!--struts2.5之后需要指明action的方法名-->
        </action>
    </package>

</struts>

(4)创建user_add.jsp页面,作为成功添加信息的反回页面。

<body>
		<s:property value="info"/>
</body>

(5)创建user_update.jsp页面,作为成功修改信息返回页面。

<body>
		<s:property value="info"/>
</body>

(6)程序的首页index.jsp,其中添加两个超链接。通过Struts2提供的动态Action功能将这两个超链接请求分别指向于UserAction类的添加与更新用户信息的请求。关键代码如下:

<body>
		<a href="userAction_add">添加用户</a>
		<a href="userAction_update">修改用户</a>
</body>

(7)主页面显示如下:
在这里插入图片描述
单击“添加用户”超链接,请求交给UserAction的add()方法处理,通过add方法返回显示user_add.jsp页面。
在这里插入图片描述
单击“修改用户”超链接,请求交给UserAction的update()方法处理,通过update方法返回显示user_update.jsp页面。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值