亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

mvc框架圖書館管理系統(tǒng)jdbc mvc架構(gòu)圖用什么畫( 三 )


/*** 我們需要一個(gè)Set,將所有能夠響應(yīng)的Controller存起來*/private Set<Class<?>> classSet = new HashSet<>();寫工具性方法/*** 掃描包,獲取所有帶MyController的類* @param packageName*/private void scanPackage(String packageName){Reflections reflections = new Reflections(packageName);classSet = reflections.getTypesAnnotatedWith(MyController.class);}在init()中調(diào)用
@Overridepublic void init(ServletConfig config) throws ServletException {//1. 加載配置文件//這里我們在web.xml中配置的初始化參數(shù)contextConfigLocation就起到效果了String initParameter = config.getInitParameter("contextConfigLocation");try {loadConfigfile(initParameter);} catch (IOException e) {e.printStackTrace();}//2. 掃描controller包,存儲所有能夠響應(yīng)的ControllerscanPackage(properties.getProperty("package"));}3.初始化controller定義所需屬性
/*** 類spring-mvc容器,存儲Controller對象*/private Map<String,Object> mySpringMVCContext = new HashMap<>();寫工具性方法/*** 初始化Controller*/private void initController() throws IllegalAccessException, InstantiationException {if(classSet.isEmpty()){return;}for (Class<?> controller : classSet) {mySpringMVCContext.put(firstWordToLowCase(controller.getSimpleName()),controller.newInstance());}}/*** 首字母轉(zhuǎn)小寫* @param string* @return 首字母為小寫的String*/private String firstWordToLowCase(String string){char[] chars = string.toCharArray();//將大寫轉(zhuǎn)成小寫chars[0]+=32;return String.valueOf(chars);}在init()中調(diào)用@Overridepublic void init(ServletConfig config) throws ServletException {//1. 加載配置文件String initParameter = config.getInitParameter("contextConfigLocation");try {loadConfigfile(initParameter);} catch (IOException e) {e.printStackTrace();}//2. 掃描controller包,存儲所有能夠響應(yīng)的ControllerscanPackage(properties.getProperty("package"));//3. 初始化controllertry {initController();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();}}4.初始化Handler映射器(Handler = controller + method)
定義所需屬性
/*** 存儲所有方法的Map<url:method>*/private Map<String,Method> methodMap = new HashMap<>();/*** 存儲所有Controller的Map*/private Map<String,Object> controllerMap = new HashMap<>();
具體實(shí)現(xiàn)方法
private void initHandlerMapping() {if (mySpringMVCContext.isEmpty()){return;}for (Map.Entry<String, Object> entry : mySpringMVCContext.entrySet()) {Class<?> entryClass = entry.getValue().getClass();if (!entryClass.isAnnotationPresent(MyController.class)){continue;}//Controller類上的requestMapping值,如果有則獲取String baseUrl = "";if (entryClass.isAnnotationPresent(MyRequestMapping.class)){MyRequestMapping annotation = entryClass.getAnnotation(MyRequestMapping.class);baseUrl = annotation.value();}//獲取所有方法Method[] methods = entryClass.getMethods();for (Method method : methods) {if (method.isAnnotationPresent(MyRequestMapping.class)){MyRequestMapping annotation = method.getAnnotation(MyRequestMapping.class);String url = annotation.value();url = baseUrl + url;//將該方法放入方法集methodMap.put(url,method);//將該controller方法處理器集controllerMap.put(url,entry.getValue());//至此,初始化完成,后端整裝待發(fā)}}}}在init()中調(diào)用
@Overridepublic void init(ServletConfig config) throws ServletException {//1. 加載配置文件String initParameter = config.getInitParameter("contextConfigLocation");try {loadConfigfile(initParameter);} catch (IOException e) {e.printStackTrace();}//2. 掃描controller包,存儲所有能夠響應(yīng)的ControllerscanPackage(properties.getProperty("package"));//3. 初始化controllertry {initController();} catch (IllegalAccessException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();}//4. 初始化Handler映射器initHandlerMapping();}好了至此,我們的領(lǐng)導(dǎo)MyDispatcherServlet 的初始化部分就寫完了,現(xiàn)在他已經(jīng)對自己的團(tuán)隊(duì)成員:眾多業(yè)務(wù)員們(Controller)已經(jīng)了如指掌了(有同學(xué)可能會問:陳老師,你還沒定義Controller呢!這個(gè)先不急)下面,我們就重寫他的service()方法,讓他能夠到外面接活


以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: