[code]public class testfa extends DispatchAction{
private int a;
private int b;
public ActionForward showa(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
a=1;
b=2;
System.out.println(a);
System.out.println(b);
}
public ActionForward showb(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
b=3;
System.out.println(a);
System.out.println(b);
}
}[/code]
如果直接执行showb方法,则a为0,如果先执行showa,再执行showb,则a=2,所以我们在使用action,特别是dispatch时,注意成员变量的清空,否则会遇到一些意外。
原因:我想可能是因为一个action就是一个Servlet,当第一次访问时实例化,之后则是一直保持状态使用,所以成员变量值得以保留,而actionform则由于系统自动调用了reset方法(socpe=request时),没有该问题。
不知道在C/S模式下如何实现Servlet
private int a;
private int b;
public ActionForward showa(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
a=1;
b=2;
System.out.println(a);
System.out.println(b);
}
public ActionForward showb(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
b=3;
System.out.println(a);
System.out.println(b);
}
}[/code]
如果直接执行showb方法,则a为0,如果先执行showa,再执行showb,则a=2,所以我们在使用action,特别是dispatch时,注意成员变量的清空,否则会遇到一些意外。
原因:我想可能是因为一个action就是一个Servlet,当第一次访问时实例化,之后则是一直保持状态使用,所以成员变量值得以保留,而actionform则由于系统自动调用了reset方法(socpe=request时),没有该问题。
不知道在C/S模式下如何实现Servlet