一、简介
空闲之余手撕一把springMVC,以加深对spring的理解,尽可能写的全面,源码中注释也会很详细。话不多说开搞!
二、项目搭建
在IDEA上用MAVEN创建一个webApp项目:
原来的springMVC中,最重要的一个类就是DispatchServlet即前端请求控制器,我们自定义自己的DispatchServlet,继承HttpServlet。
因为要继承HttpServlet,利用pom引入servlet-api的jar包:
**<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
</dependency>**
继承HttpServelet新建DispatchServlet类,重写doGet、doPost、和init方法。在init方法中实现包扫描、IOC容器初始化等一系列操作。这里面操作会在tomcat加载项目后初始化完成。
同时在web.xml配置DispatchServlet:
<servlet>
<servlet-name>DispatchServlet</servlet-name>
<servlet-class>com.zjx.myspringmvc.servelet.DispatchServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatchServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
三、流程解读
3.1.自定义注解
常用的 @Controller、@Service、@RequestMapping、@RequestParam、@Qualifier等。我们对应定义自己的注解 @MyController、@MyService、@MyRequestMapping、@MyRequestParam、@MyQualifier。
自定义注解首先了解四种元注解: @Retention @Target @Document @Inherited。
@Retention:注解的保留位置
@Retention(RetentionPolicy.SOURCE)//注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)//默认的保留策略,注解会在class字节码文件中存在,