关于重写servlet的service()方法时调用父类service方法的问题

来源:互联网 发布:涨停选股公式源码 编辑:程序博客网 时间:2024/05/29 15:02

昨天在写一个AJAX网页时用类似反射的技术重写servlet的service方法,实现一个servlet多种功能,将主要功能数据库更新(添加新用户)放在doGet()里,次要功能数据库查询(查询用户名是否已存在)放在另一个方法里。实际运行时发现在进行查询操作时总是返回true。查看代码发现eclipse在重写的service方法的首行自动生成了super.service(request,reponse);语句。该语句尝试调用父类的service方法。

代码示例:

class Father {
public void service() {
System.out.println("Method service() of Father is running...");
doGet();
}
public void doGet() {
System.out.println("Method doGet() of Father is running...");
}

class Son extends Father{
public void service() {
super.service();
}
public void doGet() {
System.out.println("Method doGet() of Son is running...");
}
public static void main(String[] args) {
Son son=new Son();
son.service();
}
}

运行结果:

Method service() of Father is running...
Method doGet() of Son is running...


该自动生成语句导致用于添加新用户的doGet()方法总是被调用,于是在调用查询某个用户名是否存在时,由于该用户名已被添加到数据库,故总是返回true。

阅读全文
0 0
原创粉丝点击