BaseServlet中的this.getClass()指的是什么

本文介绍了在Servlet中,子类如何通过父类的doGet和doPost方法调用自定义的方法。具体例子展示了StudentServlet类继承BaseServlet,并实现add和del方法。BaseServlet使用反射获取请求参数,动态调用子类的方法。当请求到达时,虽然执行的是BaseServlet的GET和POST方法,但实际操作的是StudentServlet的业务逻辑。

在初学BaseServlet时,写了一个BaseServlet类里面有一段代码:

Class c = this.getClass();

刚开始的时候就只是知道this其实指向的是子类的servlet但是并不理解其中的意思。后来在网上查阅了资料后才明白:

继承自BaseServlet的子类由于没有doGet和doPost方法只能去调用父类的,然后在父类中利用反射又获取到了子类的方法并使用

所以当访问子类servlet的时候虽然调用的是父类的GET和POST方法,但是this指向的还是该子类


举个例子:
有一个StudentServlet类继承自BaseServlet类,StudentServlet里面有add(添加)del(删除) 两个方法

StudentServlet类

@webServlet("/student/*")
public class StudentServlet extends BaseServlet{
    //添加
    public void add(HttpServletRequest req, HttpServletResponse resp){
        System.out.println("添加了一个学生");
    }
    //添加
    public void del(HttpServletRequest req, HttpServletResponse resp){
        System.out.println("删除了一个学生");
    }
}

BaseServlet类
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       //获取请求参数method
        String methodName = req.getParameter("method");
        Class c = this.getClass(); //表示子类的类对象
		Method method = c.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
            //获取方法的返回值
        Object result = method.invoke(c.newInstance(), req, resp);
    }

	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	     doGet(req,resp);
	}

当前端发送请求student?method=add
student中没有GET和POST方法那就去父类BaseServlet中去调方法,首先先获取method的参数是什么然后找到对应的方法(添加),执行完毕后返回给前端数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值