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

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


我們定義兩個(gè)注解
@MyControllerpackage com.cloudwise.annotition;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/*** @author Teacher 陳* @creat 2021-02-22-13:04* @describ 我的Controller注解,用于模仿spring中的@Controller* 能夠作用于類上,標(biāo)識(shí)該類是一個(gè)Controller*/@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface MyController {/*** 沒(méi)有用,但為了模仿spring中的@Controller,我們還是把它加上* 我們的簡(jiǎn)單版采用默認(rèn)的id:首字母小寫的類名*/String value() default "";}@MyRequestMappingpackage com.cloudwise.annotition;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;/*** @author Teacher 陳* @creat 2021-02-22-13:11* @describ 用于模仿spring中的@RequestMapping* 能夠作用于類和方法上,用于通過(guò)url指定對(duì)應(yīng)的Controller和 Method*/@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface MyRequestMapping {/*** 簡(jiǎn)單版,域名只能有一段,只能是/controllerName/methodName*/String value() default "";}好了上面的就是一些準(zhǔn)備性的工作,如果說(shuō)把仿寫springMVC看成是組成一個(gè)團(tuán)隊(duì)的話,上面的工作相當(dāng)于給團(tuán)隊(duì)找工作場(chǎng)地,下面就是對(duì)人物的刻畫了,首先有請(qǐng)我們的領(lǐng)導(dǎo)MyDispatcherServlet
編寫前端控制器編寫前端控制器(一個(gè)Servlet),并重寫init和service方法
MyDispatcherServlet
總覽整個(gè)過(guò)程圍繞兩個(gè)重寫的方法而展開(kāi),其中init()是重點(diǎn) 。
MyDispatcherServlet要做的事,用一句話來(lái)說(shuō):看前端的訪問(wèn)地址,然后調(diào)用匹配的處理器(Controller)的對(duì)應(yīng)方法(method)
要完成這些,我們需要通過(guò)注解,為Controller和method綁定上一定的字符串,然后通過(guò)分析前端傳過(guò)來(lái)的Url中的字符串,找到兩者相同的,以此完成匹配 。反射在此過(guò)程中發(fā)揮了巨大作用,不論是找到類頭上的注解,還是找到注解中的值等諸多動(dòng)作都需要反射 。
具體流程Init
Service 注:在此處Handler = controller + method
代碼(分步)創(chuàng)建一個(gè)dispatcherServlet繼承httpservlet 并重寫兩個(gè)方法
public class MyDispatcherServlet extends HttpServlet {@Overridepublic void init(ServletConfig config) throws ServletException {}@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {}}接下來(lái)就是填充兩個(gè)方法了,首先是init()方法
它大概可以分為4步
加載配置文件掃描controller包初始化controller初始化Handler映射器(Handler = controller + method)那我們開(kāi)始吧,寫加載配置文件的代碼
1.加載配置文件首先,我們?cè)谶@里選用properties文件的形式進(jìn)行配置,因此,需要有一個(gè)properties對(duì)象
/*** 我們將需要掃描的包放在一個(gè).properties文件中* 需要在初始化的時(shí)候讀取它*/private Properties properties = new Properties();再寫一個(gè)工具性的方法/*** 加載配置文件* @param fileName*/private void loadConfigfile(String fileName) throws IOException {//以流的方式獲取資源InputStream resourceAsStream = this.getClass().getClassLoader().getResourceAsStream(fileName);properties.load(resourceAsStream);resourceAsStream.close();}之后,我們?cè)趇nit()中調(diào)用該方法@Overridepublic void init(ServletConfig config) throws ServletException {//1. 加載配置文件//這里我們?cè)趙eb.xml中配置的初始化參數(shù)contextConfigLocation就起到效果了String initParameter = config.getInitParameter("contextConfigLocation");try {loadConfigfile(initParameter);} catch (IOException e) {e.printStackTrace();}}那么至此,我們的第一步加載配置文件部分的代碼就寫完啦
另外三步采用同樣的思路
2.掃描controller包定義所需屬性


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

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