为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

凤凰求蛊 2019-08-17 09:28:59
如题:Methodmethod=getClass().getDeclaredMethod,getClass()前面省略的“this.”是指的CustomerServlet吗?JSP页面源码:QueryDelete以下是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");}}
查看完整描述

2 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

先看下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方法
                            
查看完整回答
反对 回复 2019-08-17
?
梦里花落0921

TA贡献1772条经验 获得超6个赞

this指的是当前对象的方法,你这么写就是为了通过不同的请求名,执行请求名对应的方法。不是死循环,如果你的请求是post,请求,那么servlet会先调用doPost方法,如果你的请求是get,那么会先调用doGet,在doGet里调用doPost只是把逻辑交给post而已,如果你的请求没有明确指出是get还是Post那么会直接调用doGet方法。
                            
查看完整回答
反对 回复 2019-08-17
  • 2 回答
  • 0 关注
  • 1209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信