Struts2 学习笔记 —— 03 —— Action

首先说一个小问题

创建JSP文件的时候,默认的编码格式是ISO-8859-1




在Window —— Preference中,搜索JSP,将Encoding改为Chinese,National Standard




这样,默认创建JSP文件时编码格式就会自动设为GB18130




下面是Action的介绍:

具体视图的返回可以由用户自己定义的Action来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
具体Action的实现可以是一个普通的java类,里面有public String execute方法即可
或者实现Action接口
不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法


即Action的实现有三种方法:

1、建立一个普通的类,包含public String execute方法

2、实现Action接口

3、继承ActionSupport



第一种方式:

public class IndexAction1 {
	
	public String execute() {
		return "success";
	}
	
}


第二种方式:

public class IndexAction2 implements Action {

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}

}



第三种方式:

public class IndexAction3 extends ActionSupport {

	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
	
}


配置struts.xml

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

<struts>

	<constant name="struts.devMode" value="true" />

	<package name="front" namespace="/" extends="struts-default">

		<action name="IndexAction1" class="com.demo.struts2.IndexAction1">
			<result name="success">
				/IndexAction1.jsp
			</result>
		</action>
		
		<action name="IndexAction2" class="com.demo.struts2.IndexAction2">
			<result name="success">
				/IndexAction2.jsp
			</result>
		</action>
		
		<action name="IndexAction3" class="com.demo.struts2.IndexAction3">
			<result name="success">
				/IndexAction3.jsp
			</result>
		</action>
	</package>

</struts>



说明:

1、指定Action对应的class的流程变化(对比笔记01图)


当指定了action的class时,会找到这个class的对象

这里struts1和struts2的区别是struts1的这个IndexAction是一开始就创建的,

并且整个程序就这一个对象,所有访问都访问这个对象,会产生线程同步的问题

而struts2则是每次访问对象的时候都去new一个对象


当创造完后,会调用对象的execute方法,

方法执行完后,会返回一个String类型的数据,如success

然后根据这个返回值,找到对应的result,就能执行对应的jsp了

result不配置的时候,默认接收的返回值就是success(可以省略,就如同01中的示例代码了)


如果actiion不配置class的话,默认去调用ActionSupport这个类

想要看ActionSupport的源码,需要绑定xwork的源码


2、struts1与struts2的区别

struts1的Action是与具体的struts的环境要绑定的,而且离不开Servlet环境

而struts2一个不同Java类就可以了,想测试也很简单,写一个测试类就可以了



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值