旅游网站(方法优化)

对于方法调用的优化:
从前面的例子可以看到,所有的方法都被单独列出来了,比较分散
我们可以把所有user方法放在一起,通过类似/user/add,/user/get的模式进行调用
在这里插入图片描述
基本思想:
因为响应请求是通过servlet来实现的,所以必须要继承servlet接口类。
但是单纯的继承不能实现分发,所以同过继承拥有分发(自写的)功能的BaseServlet
来完成方法的分发(而且也很便捷,只要写一个就能满足任何的方法分发)
类似UserServlet继承了Baseservlet就可以调用其service方法,所以只要在BaseServlet的Service方法内写方法分发的逻辑即可

具体实现:
在这里插入图片描述
为了防止乱码问题,可以通过如图配置来解决。
在这里插入图片描述
首先获得请求路径,之后进行最后一个 / 后的字符的截取,因为类似/user/add 前面的都是一直的,是通过后面字符的不同来调用不同的方法的
之后调用的是getClass(获得的是具体的类),这里的this(谁调用方法this就表示谁)
getMethod第二个开始之后的参数表示methodName这个类中方法的参数类型!
Invoke方法执行具体方法(这个方法我不是很理解),但是作用是执行方法
在这里插入图片描述
之后执行方法会报错,首先可以看到后面两个箭头指向的是参数,即上面说到的getMethod方法的参数设置!
这里错误的原因是方法是protected类型,外部不能访问,有两个方法解决:
①:
在这里插入图片描述在这里插入图片描述
通过getDeclaredMethod方法可以获得该类中的所有方法包括私有方法,同时要设置setAccessible为true
但是这个操作明显不是十分合适,因为这样一个类就没有隐私了
②:
所以可以把一般的方法设置为public,这样一般类就可以直接调用到了,同时也可以设置protected方法。
在这里插入图片描述
整合到一个servlet中后,对于继承调用的部分可以提取出来单成一行
同时对于一些路径也要更改,如
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值