反射在Servlet中的应用
一、反射大量简化if/else判断
-
原本web层与servlet 通讯方式:
使用了大量的条件判断语句,使得代码不够清晰
-
现在用反射可以直接调用
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置服务器的字符集 req.setCharacterEncoding("UTF-8"); //获取表的action参数 String action=req.getParameter("action"); /** * 1.获取表的action参数 * 2.升级后用反射获取对应的 */ //通过表单中的action调用同名称的业务函数 try { //规定调用的 方法(名称,参数类型1,参数类型2) Method method = this.getClass().getDeclaredMethod(action,HttpServletRequest.class,HttpServletResponse.class);//第一个为method名称,后面两个为传入的参数 //调用反射方法 method.invoke(this,req,resp); } catch (Exception e) { throw new RuntimeException(e); } }
二、建立Base层
- 在上方改良后,现在的servlet层
- 抽取公共部分变为BaseServlet层
后续的Servlet只用继承BaseServlet即可