action的学习
来源:互联网 发布:周易生辰八字起名软件 编辑:程序博客网 时间:2024/05/22 01:45
这是一个简单的登录操作
<s:textfield name="username" label="用户名"/>
<s:password name="passwword" label="密码"/>
label属性,可以提示用户,比jsp要好的多
我们觉得jsp好像有点糊涂 如何做action呢,有几种方式
1.javabean ,里面必须有一个execute方法
2 实现action 接口
3 继承actionsupport 抽象类
好啦,我们分别看下
通过前面的例子我们感觉action好像和servlet类似 你的感觉是对的,是处理逻辑单元,相当于控制器
一,action的简介
多数的mvc框架中的control层 都是一个java对象,按照惯例通常把这个层面上的java对象统称action层,控制层或者model层
mvc:model------controller-----view
模型层-------控制层----------视图层(jsp,或其他视图)
action的定义
传统的mvc框架中,control层一般是一个类似servlet的一个java对象,因为从自责上讲 control 层要完成以下职责
1:接受从web容器传递过来的参数(view层)并做恰当的类型转化
2:调用逻辑处理
3 搜集数据,并返回到视图
struts2 有两个重要的控制器 strutsPrepareAndexecutefilter:中央控制器(核心控制器,struts框架提供),负责接受所有请求
这个认识吗?好像熟悉。我带你看下,他在哪里配置。
明白,在web.xml中,他是一个过滤器。这里算是一个控制器,而且是中央控制器,这个要记住啊。
Action: 业务逻辑控制器,负责处理单个特定请求。
这里我们看到,将每一个Action作为一个控制器来看待,而没有当做Model层。这个问题不大。
如何实现action呢
1 javabean我们做了 而且一定要有个execute方法
2 实现action借口
3 继承actionsupport抽象类
一、实现Action接口。
我们看下源代码。我不知道他在哪个包下,咋办?
哈哈
我们还找不到,因为struts2的源代码和xwork的源代码是分开的。咋办?也无所谓的。我们java基础说过,接口中只有常量和抽象方法。对吧
我们用接口名.常量,就可以了。。
public static final String ERROR="error";
public static final String INPUT="input";
public static final String LOGIN="login";
public static final String NONE="none";
public static final String SUCCESS="success";
java基础好,没有源代码也可以,我们还有反射机制啊
你会问他有啥方法,我们可以做一个类继承它,如果有抽象方法的话我们必须实现它,否者就是抽象类了,public String execute() throw Exception;
这个就是他的抽象方法
我们按照昨天的方式实现Login1.
我们要配置了,一个<package>中可以有多个<action>子元素。
我们通过控制台,可以看到我们已经进入Login1这个action的execute方法中。
二、继承ActionSupport抽象类。
这里我们做一个类Login2 继承ActionSupport抽象类,当然了,我们这里要覆盖execute方法。
我天,ActionSupport方法中有那么多方法!!!!,是啊,今后就继承它吧,它是最常用的。
好。!我们继续。剩下的做法跟前面一致,我就做了,你看下就可以了。
com.opensymphony.xwork2.Action
com.opensymphony.xwork2.Validateable
com.opensymphony.xwork2.ValidationAware
com.opensymphony.xwork2.TextProvider
com.opensymphony.xwork2.LocaleProvider
java.io.Serializable
actionsupport里实现了好多借口,主要的一个是实现了action接口,那我们以后继承actionsupport就可以了有了SUCCESS等常量
我们前面做的都是jsp页面表单都是分开的。我们通常将页面表单组合成一个javabean对吧。如果这样我们如何处理
jsp页面表单
<s:form action="login2.action">
<s:textfield name="username" label="用户名"/>
<s:password name="password" label="密码"/>
<s:submit value="登陆"/>
</s:form>
我们做个javabean:user.java
这个javabean里面就是2个属性,它可不是action啊,不要搞混
我们做个login5 继承了actionsupport
我天,终于出错了。
NullPointerException
啥也没有得到。为啥呢?这里你记住,如果引入javabean了,你的页面表单必须这么写
user.username
user.password
这个页面表单的user名字必须和action中的user这个变量名一致
你觉得能否不再页面表单写上user,答:可以,但必须实现一个接口。这个接口叫ModelDriven
但必须在action中创建User user=new User();
如果你不使用ModelDriven接口,你必须在页面表单出写上user.username,当然可以不用在Action中创建对象,User user;就可以了,但必须有相应的setter,getter方法。这个地方好好弄下,总结下。下次,我们说下简单的验证。ok!就到这里
- action的学习
- struts2的action的学习
- struts2中Action的学习
- 《junit in action》:学习junit的好书!
- 一步一步学习struts2(3):Action的配置
- struts2学习之Action的数据
- struts.xml中action标签的学习
- 研磨Struts2-Action的数据-学习笔记
- windchill学习之action的filter注册
- 学习spark:三、RDD的action操作
- 【web开发学习笔记】Structs2 Action学习笔记(三)action通配符的使用
- Struts2学习笔记02------Action名称的搜索顺序和Action配置的各项默认值
- yii中Controller中的Action直接跳到另一个action的方法(yii学习)
- 【JAVA学习】struts2的action中使用session的方法
- SSH学习--struts的action中BaseAction的作用
- 记录学习的点滴(Struts2的Action配置)
- [荐]学习flash mx2004 action script 2.0的好书
- Struts2学习(四):Action执行的时候发生了什么
- INTERVAL 用法
- 线程池
- solr+tomcat例子
- 学习笔记_oracle——体系结构
- 2014校园招聘总结
- action的学习
- 学习笔记_oracle——备份与恢复
- Codeforces Round #241 (Div. 2) C
- Loadrunner IP欺骗
- Java开发中的23种设计模式详解
- 学习笔记_oracle——游标与动态SQL
- 检测重复文件功能实现(改进版本1)
- Codeforces Round #241 (Div. 2) D
- Remove '@override' annotation解决办法