




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第 17 章 WEB17-基礎加強篇1.1案例一:使用自定義注解完成Test 注解功能類似的效果:1.1.1 需求1.1.2 分析: 技術分析:【注解】【JDK 提供的注解】自定義注解:定義一個類:class定義一個借口: erface定義一個枚舉:enum定義一個注解: erface【自定義注解案例】 erface MyAnno1帶有屬性的注解: erface MyAnno2a() default 1; String b();Override:描述方法的重寫. SuppressWarnings:壓制警告.Deprecated:標記過時.程序中有 注釋 和注解注釋:給開發(fā).注解:給計算機看的.
2、注解使用:學習框架支持注解開發(fā).使用 Junit 是單元測試的工具.在一個類中使用 Test 對程序中的方法進試.自定義一個注解MyTest 也將這個注解加在類的方法上. 使這個方法得到執(zhí)行. 步驟分析:定義一個測試類定義運行類:在運行類中有一個主函數(shù):獲得測試類中的所有的方法.獲得每個方法,查看方法上是否有MyTest 注解.public class Anno ionDemo3 MyTestpublic void demo1()System.out.pr ln(demo1 執(zhí)行了.);MyTestpublic void demo2()System.out.pr ln(demo2 執(zhí)行了.);
3、public void demo3()System.out.pr ln(demo3 執(zhí)行了.);/ 注解屬性的類型:基本數(shù)據(jù)類型,字符串類型 String,Class,注解類型,枚舉類型,以及以上類型的一維數(shù)組./ Date d(); Class clazz();MyAnno3 m3(); / 注解Color c(); / 枚舉String arrs();MyAnno4(aaa) / 如果屬性名稱為value 那么使用的時候 value 可以省略(只出現(xiàn)這一個value 的屬性情況下).public class Anno ionDemo3 erface MyAnno4 String value
4、();a() default 1;1.1.3代碼實現(xiàn):1.1.4總結(jié):使用注解完成 JDBC 工具類的編寫:(了解)public class JDBCUtils private sic String driverClass; private sic String url;private sic String username;通過元注解定義注解存在的階段.* 元注解也是一個注解:修飾注解的 注解.自定義一個注解:運行類:public class CoreRunner public sic void main(String args) / 反射:獲得類的字節(jié)碼對象.Class Class cla
5、zz = Anno ionDemo3.class;/ 獲得測試類中的所有的方法:Method methods = clazz.getMethods();/ 遍歷數(shù)組:for (Method method : methods) / System.out.pr ln(method.getName();/ 判斷方法上是否有MyTest 注解:flag = method.isAnnoionPresent(MyTest.class);/ System.out.pr ln(method.getName()+flag); if(flag)/ 讓這個方法執(zhí)行:try method.invoke(clazz.n
6、ewInstance(), null); catch (Exception e) e.pr StackTrace();如果有這個注解,讓這個方法執(zhí)行.1.2案例二:使用Servlet3.0 技術完成文件的上傳:1.2.1 需求:1.2.2 分析: 技術分析:【Servlet3.0】Servlet3.0 與 Servlet2.5:Servlet3.0 需要運行在tomcat7 以上的服務器中.Servlet3.0 以后web.xml 就不是必須的.private sic String password;JDBCInfopublic sic Connection getConnection() t
7、hrows Exception/ 反射:Class clazz = JDBCUtils.class;Method method = clazz.getMethod(getConnection, null);/ 獲得方法上的注解:JDBCInfo jdbcInfo = method.getAnno ion(JDBCInfo.class); driverClass = jdbcInfo.driverClass();url = jdbcInfo.url();username = jdbcInfo.username(); password = jdbcInfo.password();Class.for
8、Name(driverClass);Connection conn = DriverManager.getConnection(url, username, password);return conn;【Servlet3.0 支持注解開發(fā)】【Servlet3.0 支持異步請求-了解】使用的是多線程的方式處理的,將傳統(tǒng)的方式一次請求的非常耗時的操作,分成多個線程去處理.需要在 Servlet 上添加一個屬性: WebServlet(urlPatterns=/ServletDemo2,asyncSupported=true)WebServlet(urlPatterns=/ServletDemo2,
9、asyncSupported=true) public class ServletDemo2 extends HttpServletOverrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException AsyncContext context = req.startAsync(req, resp); context.start(new MyRunner(context);for(i=1;i=20;i+) System.out.pr l
10、n(i);try Thread.sleep(500); catch ( erruptedException e) e.pr StackTrace();Overrideprotected void dot(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 使用WebServlet 替換web.xml 中配置的Servlet: WebServlet(urlPatterns=/ServletDemo1,loadOnStartup=2,initParams=WebInitPara
11、m(name=username,value=root)使用WebListener 替換 web.xml 中器的配置:WebListener使用WebFilter 替換 web.xml 中的過濾器的配置: WebFilter(urlPatterns=/*)1.Servlet3.0 支持注解開發(fā). 2.提供異步請求.3.支持文件上傳.【Servlet3.0 的文件上傳】文件上傳:文件上傳的要素:文件上傳的抓包分析:【文件上傳的原理】【文件上傳的技術】 步驟分析:設計一個文件上傳頁面:提交到 Servlet:接收普通項:request.getParameter();接收上傳項:Part:通過 Par
12、t 對象中的方法完成文件的上傳.1.2.3 代碼實現(xiàn)1.2.4 總結(jié): 文件名重名: 文件上傳的目錄分離:1.3案例三:使用動態(tài)的方式的字符集編碼1.3.1 需求:1.3.2 分析: 技術分析:【動態(tài)】【入門案例】1.3.3 代碼實現(xiàn):/ 對 req 產(chǎn)生對象:HttpServletRequestmyReq=(HttpServletRequest)(), new InvocationHandler()Proxy.newProxyInstance(req.getClass().getClassLoader(),req.getClass().get erfaOverridepublic Objec
13、t invoke(Object proxy, Method method, Object args) throws Throwable / 增強 getParameter: if(getParameter.equals(method.getName()/ 增強./ 根據(jù)請求方式:String type = req.getMethod(); if(get.equalsIgnoreCase(type)/ 調(diào)用原有的 getParameter:String value = (String)method.invoke(req, args);String s = new String(value.getBytes(ISO-8859-1),UTF-8); return s;else if(t.e
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司勞務合同范本模板
- 代理合同范本 日文
- 住房拆除合同范本
- 南京社保合同范本
- 占用綠地賠償合同范本
- 抵押個人汽車借款合同范本
- 勞務外協(xié)施工合同范本
- 廚房承包職務合同范本
- 吊裝費合同范本
- 貓砂購銷合同范本
- 100以內(nèi)進退位加減法口算題每天60道
- 小兒推拿健康檔案表
- 2024年南京城市職業(yè)學院單招職業(yè)技能測試題庫及答案解析
- 廣告牌制作安裝應急預案
- 塔吊的安拆培訓課件
- 凈菜加工技術通則
- 《寵物醫(yī)院實務》課程標準
- 20以內(nèi)退位減法口算練習題100題30套(共3000題)
- 招標投標法-法律法規(guī)題庫(257道)
- 《班主任會議》課件
- 選品與采購全套教學課件
評論
0/150
提交評論