strtuts中 ActionForm的属性attribute深入解析
来源:互联网 发布:免费的程序化软件 编辑:程序博客网 时间:2024/06/05 15:14
第一种:从过程查看:
新建一个listener实现上面两个listener接口,如:
package blog;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import org.apache.struts.action.ActionForm;
public class AttributeListener implements ServletRequestAttributeListener,
HttpSessionAttributeListener {
public AddStudentAction() {
System.out.println("in AddStudentAction constructor 测试Action的实例个数");
}
@Override
public void attributeAdded(ServletRequestAttributeEvent srae) {
String name = srae.getName();
if (srae.getValue() instanceof ActionForm) {
System.out.println("in request " + name + " attribute add");
}
}
@Override
public void attributeRemoved(ServletRequestAttributeEvent srae) {
String name = srae.getName();
if (srae.getValue() instanceof ActionForm) {
System.out.println("in request " + name + " attribute remove");
}
}
@Override
public void attributeReplaced(ServletRequestAttributeEvent srae) {
String name = srae.getName();
if (srae.getValue() instanceof ActionForm) {
System.out.println("in request " + name + " attribute replace");
}
}
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
String name = event.getName();
if (event.getValue() instanceof ActionForm) {
System.out.println("in session " + name + " attribute add");
}
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
String name = event.getName();
if (event.getValue() instanceof ActionForm) {
System.out.println("in session " + name + " attribute remove");
}
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
String name = event.getName();
if (event.getValue() instanceof ActionForm) {
System.out.println("in session " + name + " attribute replace");
}
}
}
然后在web.xml中加入如下配置:
<listener>
<listener-class>cn.itcast.AttributeListener</listener-class>
</listener>
这样就可以监听属性的添加、替换及删除了。
第二种:从结果查看,比较action的execute方法中传入的actionform与根据页面得到的actionform:
package blog;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class AddStudentAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
AddStudentForm studentForm = (AddStudentForm) form;
AddStudentForm studentFormScope = null;
if(mapping.getScope().equals("request")){
studentFormScope =(AddStudentForm) request.getAttribute("addStudentForm");
}else if(mapping.getScope().equals("session")){
studentFormScope =
(AddStudentForm) request.getSession().getAttribute("addStudentForm");
}
if (studentForm == studentFormScope) {
System.out.println("studentForm == studentFormScope");
}
}
ActionForm中各方法的调用次序:
首先是构造方法的调用,用来实例化;
然后是reset方法的调用,目的是为了将ActionForm的属性设置为缺省值(default value);
其次是各个属性的set方法(setter),给属性进行赋值;
最后是校验方法validate方法,用来校验数据的合法性,如密码的长度等。
在构造方法调用之后,控制器就会把ActionForm加入到session或request当中。
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("in AddStudentForm validate");
ActionErrors errors = new ActionErrors();
ActionMessage message = new ActionMessage("error", "出错了");
errors.add("error", message);
return errors;//null 等同于super.validate(mapping, request)
}
在struts-config.xml中对应于validate方法有关的validate属性和input属性的值如下:
<action path="/addStudent" name="addStudentForm" type="cn.itcast.AddStudentAction"
attribute="addStudentForm" validate="true" input="/ErrorInput.jsp"
>
- strtuts中 ActionForm的属性attribute深入解析
- Struts的ActionForm中不同类型属性的使用方法总结
- Struts的ActionForm中不同类型属性的使用方法总结
- Struts的ActionForm中不同类型属性的使用方法总结
- ActionForm产生,生命周期,校验深入解析
- Map作为ActionForm的属性,动态增加ActionForm的“属性”
- actionform的属性大小写问题
- 访问动态ActionForm的属性
- .net中属性Attribute
- struts-config中action 的attribute属性与name属性
- 09. 属性的Attribute
- 提交多行数据到Struts的ActionForm的List属性中
- 多行数据提交到Struts的ActionForm的List属性中
- 提交多行数据到Struts的ActionForm的List属性中
- 多行数据提交到Struts的ActionForm的List属性中
- 多行数据提交到Struts的ActionForm的List属性中
- 多行数据提交到Struts的ActionForm的List属性中
- Struts的ActionForm中不同类型属性的使用方法总结(转载)
- OpenCV學習筆記(19)雙目測距與三維重建的OpenCV實現問題集錦(四)三維重建與OpenGL顯示
- Hibernate学习笔记(十)
- java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@450b2f48 异常处理
- OpenCV學習筆記(21)在OpenCV窗口中創建滾動條瀏覽大圖
- OpenCV學習筆記(22)OpenCV_SVN靜態庫的編譯
- strtuts中 ActionForm的属性attribute深入解析
- virtualBox上xp系统不显示SVN图标
- blastall commands analysis
- oracle listener.ora监听文件与tnsnames.ora配置
- 关于制作按钮特效放大
- 推荐的杀毒软件
- 单链表排序之选择排序(赞)
- JAVA——内部类
- 浅谈悲催的“期末考试”