请教各位一个问题,求解答:未解决 Method method = getClass().getDeclaredMethod ,谁的getClass() ?怎么回事哈啊?

如题:Methodmethod=getClass().getDeclaredMethod,getClass()前面省略的“this.”是指的CustomerServlet吗?
JSP页面源码:
Query


Delete
以下是CustomerServlet源码:
@WebServlet(name="CustomerServlet",urlPatterns={"*.do"})
publicclassCustomerServletextendsHttpServlet{
privatestaticfinallongserialVersionUID=1L;
protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
doPost(request,response);
}
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{
StringservletPath=req.getServletPath();
StringmethodName=servletPath.substring(1,servletPath.length()-3);
System.out.println(methodName);
try{
Methodmethod=getClass().getDeclaredMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this,req,resp);
}catch(Exceptione){
}
}
privatevoiddelete(HttpServletRequestrequest,HttpServletResponseresponse){
System.out.println("delete");
}
privatevoidquery(HttpServletRequestrequest,HttpServletResponseresponse){
System.out.println("query");
}
}
凤凰求蛊
浏览 1210回答 2
2回答

胡子哥哥

先看下Method的invoke(Objectobj,Object...args)方法的定义是一个obj参数和一个ags不定参数,JAVAAPI给出解释是obj是调用底层方法的对象,args是调用方法的参数Parameters:obj-theobjecttheunderlyingmethodisinvokedfromargs-theargumentsusedforthemethodcall而this指向的是当前对象的引用,也就是说CustomerServletcustomerServlet=newCustomerServlet();customerServlet.doPost(req,resp);//调用doPost时候this指的是customerServlet对象疑问???这个程序是不是死循环啊,一直调用自己的doPost方法

梦里花落0921

this指的是当前对象的方法,你这么写就是为了通过不同的请求名,执行请求名对应的方法。不是死循环,如果你的请求是post,请求,那么servlet会先调用doPost方法,如果你的请求是get,那么会先调用doGet,在doGet里调用doPost只是把逻辑交给post而已,如果你的请求没有明确指出是get还是Post那么会直接调用doGet方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript