如何利用反射簡化Servlet操作


如何利用反射簡化Servlet操作

 

一、反射的實現

  新建類BaseServlet,繼承HttpServlet(不需要在web.xml文件中配置

  1、在doPost()方法中處理請求亂碼,並調用doGet()方法

    //處理post請求亂碼,只需要在getParamter方法第一次調用前,設置request的編碼
      request.setCharacterEncoding("utf-8");

      調用doGet()

  2、doGet()中:

    //獲取用戶傳遞的請求參數
      String methodName = request.getParameter("method");
    //通過方法名獲取到方法的對象
      //獲取當前類的Class對象
        Class cla = this.getClass();
      //獲取cla的方法(Method對象)
        //getDeclaredMethod需要兩個參數,方法名和參數名
        //因為在java需要通過方法名和參數列表來確定一個方法
      try {
        //獲取方法對象
          Method method = cla.getDeclaredMethod(methodName, HttpServletRequest.class , HttpServletResponse.class);
        //設置方法的訪問權限
          method.setAccessible(true);     //該方法可以取消Java的權限控制檢查,就可以調用類的私有屬性和方法
        //調用方法
        //invoke用於調用一個方法,第一個參數時要調用方法的對象,剩下是調用方法需要的參數
          method.invoke(this, request , response);         //方法調用,傳遞調用對象及參數
      } catch (Exception e) {
        e.printStackTrace();
      }

 二、反射的應用

  1、新建的Servlet繼承BaseServlet類,不需要重寫doGet和doPost方法,直接寫不同的處理方法,注意方法名要與methodName的值相匹配

  2、執行流程:

      頁面提交表單到對應Servlet

      該Servlet由於繼承了BaseServlet類,會調用父類的doGet或doPost方法,

      通過頁面獲取的參數,調用該Servlet對應名稱的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM