利用反射获取Servlet中要执行的方法

我们学Java知识的时候学过反射机制,主要是用来获取调用类的成员变量、构造器、方法,还可以实例化对象,只要是想获取的就可以得到,在这里相对来说它是强大的,具有很大的灵活性。但是它会破坏安全性,打破封装性。然而再强大的东西都有软肋,它的软肋就是枚举,只有枚举类可以防止反射,Java虚拟机会在底层保护它,保护它不会反射,可以天然的防止反射和反序列化。
利用反射获取Servlet中要执行的方法:
下面我们在servlet中通过反射来减少区分方法的代码,封装一个BaseServlet工具类。这个类要继承HttpServlet,然后重写HttpServlet中的service方法,设置请求的字符编码格式,获取客户端提交到服务端的Type对应的方法,判断方法是否为空,为空的话就返回默认方法execute,返回的是null值。接下来定义一个变量,用来存放功能执行完之后要跳转的路径。然后获取子类字节码对象,获取字节码对象中名称为type的方法,如果方法名不为null,就调用找到的方法,也可以判断一下要跳转的路径不为null时,请求到服务端的跳转,如果servlet不用到请求到页面的跳转,也可以不用判断。
详细代码:

public class BaseServlet extends HttpServlet{
	/**
 	 * 重写service方法
	 */
	@Override
	public void service(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
		request.setCharacterEncoding(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值