java中的action是指什么_Struts2【开发Action】知识要点前⾔
前⾯Struts博⽂基本把Struts的配置信息讲解完了.....本博⽂主要讲解Struts对数据的处理
Action开发的三种⽅式
在第⼀次我们写开发步骤的时候,我们写的Action是继承着ActionSupport类的...为啥我们继承了ActionSupport类呢?下⾯我就会讲解到
继承ActionSupport类
我们来看⼀下ActionSupport⼲了什么:
也就是说,如果我们在Action类中需要⽤到Struts为我们提供的数据校验等Struts已经帮我们实现的功能,我们就继承着ActionSupport 类..
实现Action接⼝
我们再来看看Action接⼝⼲了什么:
当然啦,ActionSuppot也继承着Action接⼝,所以ActionSuppot拥有Action接⼝的全部功能....因此,这种开发⽅式我们是⽐较少⽤的...
不继承任何类、不实现任何接⼝
开发此类的Action,它是不继承任何类、不实现任何接⼝的...也就是说,它就是⼀个普通的Java类....
Action类
public class PrivilegeAction {
public String login() {
System.out.println("我是普通的javaAction,不继承任何的类、不实现任何的接⼝");
return "success";
}
}
在配置⽂件中配置:
/index.jsp
效果:
⼩总结
如果我们使⽤到了Struts2⼀些特⽤的功能,我们就需要继承ActionSupport
如果我们没⽤到Struts2的特殊功能,只要平凡写⼀个Java类⾏了。
⼤多情况下,我们还是会继承ActionSupport的。
请求数据封装
⼀般地,我们使⽤Servlet的时候都是分为⼏个步骤的:
得到web层的数据、封装数据
调⽤service层的逻辑业务代码
将数据保存在域对象中,跳转到对应的JSP页⾯
现在问题来了,我们⾃⼰编写的Action类是没有request、response、Session、application之类的对象的....我们是怎么得到web层的数据、再将数据存到域对象中的呢??
前⾯已经说过了,Struts预先帮我们完成了对数据封装的功能,它是通过params来实现数据封装的
register.jsp
⾸先,我们填写表单页⾯的数据,请求Action处理数据
⽤户名:
密码:
年龄:
⽣⽇:
Action封装基本信息
在Action设置与JSP页⾯相同的属性,并为它们编写setter⽅法
private String username;
private String psd;
private int age;
private Date birthday;
public void setUsername(String username) {
this.username = username;
}
public void setPsd(String psd) {
this.psd = psd;
}
public void setAge(int age) {
this.age = age;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
我们直接在业务⽅法中访问这些变量,看是否能得到表单的值。
Action封装对象
⼀般地,我们注册的时候,都是在Servlet上把基本信息封装到对象上...那么在Struts怎么做呢?创建⼀个User类,基本的信息和JSP页⾯是相同的。
package qwer;
import java.util.Date;
/**
* Created by ozc on 2017/4/27.
*/
public class User {
private String username;
private String psd;
private int age;
private Date birthday;
public String getUsername() {
return username;
}
public void setUsername(String username) { this.username = username;
}
public String getPsd() {
return psd;
}
public void setPsd(String psd) {
this.psd = psd;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
javabean是干什么的
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) { this.birthday = birthday;
}
}
在Action中定义User对象出来,并给出setter和getter⽅法....值得注意的是:基本信息只要setter就够了,封装到对象的话,需要setter和getter
public class ccAction extends ActionSupport {
private User user;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String register() {
System.out.Username());
System.out.Psd());
System.out.Age());
System.out.Birthday());
return "success";
}
}
在JSP页⾯,提交的name要写成user.username之类的
⽤户名:
密码:
年龄:
⽣⽇:
得到域对象
Struts怎么把数据保存在域对象中呢Struts提供了三种⽅式
⼀、得到Servlet API
我们可以通过ServletActionContext得到Servlet API
由于每个⽤户拥有⼀个Action对象,那么底层为了维护⽤户拿到的是当前线程的request等对象,使⽤ThreadLocal来维护当前线程下的request、response等对象...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。