1. 程式人生 > >JavaWeb17-HTML篇筆記(一)

JavaWeb17-HTML篇筆記(一)

Java

1.1 上次課內容回顧:
Listener :

  • 監聽器就是一個JavaBean用來監聽其他Bean變化.
  • 事件源:被監聽的對象.
  • 監聽器:監聽的對象.
  • 事件源與監聽器的綁定:
  • 事件:事件源改變.通過事件對象獲得事件源對象.
  • Servlet的監聽器:
    • 事件源:三個域對象.ServletContext,HttpSession,ServletRequest
  • 三類:
    • 一類:監聽三個域對象的創建和銷毀的監聽器.
    • 二類:監聽三個域對象的屬性變更監聽器.
    • 三類:監聽HttpSession中的JavaBean的狀態的改變的監聽器.
      Filter :
  • 過濾器就是對從客服端發送到服務器的請求進行過濾的.
  • FilterConfig:過濾器配置.
    • 獲得初始化參數
    • 獲得ServletContext
    • 獲得過濾器的名稱
      • FilterChain:過濾器鏈.
      • 生命周期:服務器啟動的時候進行創建,服務器關閉的時候銷毀.
      • 過濾器的配置:
    • <url-pattern>的配置
    • <servlet-name>的配置
    • <dispatcher>的配置:
      • REQUEST
      • FORWARD
      • INCLUDE
      • ERROR
        • 自動登錄:
        • 網站亂碼的解決:
          1.2 案例一:使用自定義註解完成@Test註解功能類似的效果:1.2.1 需求
          使用Junit是單元測試的工具.在一個類中使用 @Test 對程序中的方法進行測試.
          自定義一個註解@MyTest 也將這個註解加在類的方法上. 使這個方法得到執行.
          1.2.2 分析:1.2.2.1 技術分析:
          ? 【註解】
          程序中有 註釋 和註解
        • 註釋:給開發人員.
        • 註解:給計算機看的.
          註解使用:學習框架支持註解開發.
          ? 【JDK提供的註解】
          @Override :描述方法的重寫.
          @SuppressWarnings :壓制警告.
          @Deprecated :標記過時.
          ? 自定義註解:定義一個類:class
          定義一個借口:interface
          定義一個枚舉:enum
          定義一個註解:@interface
          br/>定義一個類:class
          定義一個借口:interface
          定義一個枚舉:enum
          定義一個註解:@interface
          @interface MyAnno1{

}
帶有屬性的註解:
@interface MyAnno2{
int a() default 1;
String b();
// 註解屬性的類型:基本數據類型,字符串類型String,Class,註解類型,枚舉類型,以及以上類型的一維數組.
// Date d();
Class clazz();
MyAnno3 m3(); // 註解
Color c(); // 枚舉
String[] arrs();

}
@MyAnno4("aaa") // 如果屬性名稱為value 那麽使用的時候 value可以省略(只出現這一個value的屬性情況下).
public class AnnotationDemo3 {
}
@interface MyAnno4{
String value();
int a() default 1;
}
1.2.2.2 步驟分析:
定義一個測試類
public class AnnotationDemo3 {@MyTest
br/>@MyTest
System.out.println("demo1執行了...");
}

    @MyTest
    public void demo2(){
            System.out.println("demo2執行了...");
    }

    public void demo3(){
            System.out.println("demo3執行了...");
    }

}定義核心運行類:
在核心運行類中有一個主函數:
獲得測試類中的所有的方法.
獲得每個方法,查看方法上是否有@MyTest註解.
br/>定義核心運行類:
在核心運行類中有一個主函數:
獲得測試類中的所有的方法.
獲得每個方法,查看方法上是否有@MyTest註解.
1.2.3 代碼實現:
通過元註解定義註解存在的階段.

  • 元註解也是一個註解:修飾註解的 註解.
    自定義一個註解:
    核心運行類:
    public class CoreRunner {
    public static void main(String[] args) {
    // 反射:獲得類的字節碼對象.Class
    Class clazz = AnnotationDemo3.class;
    // 獲得測試類中的所有的方法:
    Method[] methods = clazz.getMethods();
    // 遍歷數組:
    for (Method method : methods) {
    // System.out.println(method.getName());
    // 判斷方法上是否有@MyTest註解:
    boolean flag = method.isAnnotationPresent(MyTest.class);
    // System.out.println(method.getName()+" "+flag);
    if(flag){
    // 讓這個方法執行:
    try {
    method.invoke(clazz.newInstance(), null);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }
    }
    1.2.4 總結:
    使用註解完成JDBC工具類的編寫:(了解)
    public class JDBCUtils {
    private static String driverClass;
    private static String url;
    private static String username;
    private static String password;

    @JDBCInfo
    public static Connection getConnection() throws Exception{
            // 反射:
            Class clazz = JDBCUtils.class;
    
            Method method = clazz.getMethod("getConnection", null);
    
            // 獲得方法上的註解:
            JDBCInfo jdbcInfo = method.getAnnotation(JDBCInfo.class);
            driverClass = jdbcInfo.driverClass();
            url = jdbcInfo.url();
            username = jdbcInfo.username();
            password = jdbcInfo.password();
    
            Class.forName(driverClass);
            Connection conn = DriverManager.getConnection(url, username, password);
    
            return conn;
    }

    }

JavaWeb17-HTML篇筆記(一)