写出一个你自己的MVC框架-基于对springMVC源码实现和理解(1):入口所在

在开始之前,我们必须对springMVC有一个明确的认识。一个软件项目的完成少不了各种设计文档,对整个项目进行一个规划,而在这里,我们写自己的MVC只是为了对springMVC有更深的认识,我们不妨跟随自己对springMVC的剖析,一步步写自己的MVC。众所周知,无论什么MVC框架都无外乎对servlet的封装。自然,我们对springMVC的了解需要从web.xml开始。springMVC对一个请求的所作所为都有一个唯一的入口DispatcherServlet,联想一下我们在使用springMVC时的配置:

  1. <servlet>  
  2.   <servlet-name>dispatcher</servlet-name>  
  3.   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  4.   <init-param>  
  5.     <param-name>contextConfigLocation</param-name>  
  6.     <param-value>/WEB-INF/classes/spring.xml</param-value>  
  7.   </init-param>  
  8.   <load-on-startup>1</load-on-startup>  
  9. </servlet>  
  10. <servlet-mapping>  
  11.   <servlet-name>dispatcher</servlet-name>  
  12.   <url-pattern>/*</url-pattern>  
  13. </servlet-mapping>  

我们可以发现三点:

1.DispatcherServlet只对匹配的请求进行处理(当然你可以配置对所有请求做出反应)。

2.DispatcherServlet在服务器启动时便开始实例化。

3.DispathcherServlet需要在启动时加载一个配置文件。


现在就可以动手了,建个项目,取个顺眼的名字,建立第一个也是最核心的类DispatherServlet,名称自然是随你喜欢:

  1. package com.wbh.mymvc.servlet;  
  2.   
  3.   
  4.   
  5. /** 
  6.  * 请求调度核心类 
  7.  *  
  8.  * @author wbh 
  9.  */  
  10. public class MyDispatcherServlet extends HttpServlet {  
  11.   
  12.     private Properties p;  
  13.   
  14.   
  15.     @Override  
  16.     public void init() throws ServletException {  
  17.     }  
  18.   
  19.     @Override  
  20.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  21.             throws ServletException, IOException {  
  22.     }  
  23.   
  24.     @Override  
  25.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
  26.             throws ServletException, IOException {  
  27.     }  
  28.   
  29. }  

DispatcherServlet本质便是一个Servlet,继承自HttpServlet,几个需要重写的方法自不必多说。另外,别忘了你需要一个配置文件,这里我选择了properties当配置文件,为什么?因为它功能简陋,看着眼睛不容易花。只为了学习,一切从简。接下来就可以将它配置在web.xml文件中了:
  1. <servlet>  
  2.         <servlet-name>dispatcher</servlet-name>  
  3.         <servlet-class>com.wbh.mymvc.servlet.MyDispatcherServlet</servlet-class>  
  4.         <init-param>  
  5.             <param-name>mvcConfigLocation</param-name>  
  6.             <param-value>/WEB-INF/classes/mymvc.properties</param-value>  
  7.         </init-param>  
  8.         <load-on-startup>1</load-on-startup>  
  9.     </servlet>  
  10.     <servlet-mapping>  
  11.         <servlet-name>dispatcher</servlet-name>  
  12.         <url-pattern>/</url-pattern>  
  13.     </servlet-mapping>  

不用觉得眼熟,不这么配还能怎么配,需要注意的有两点:

1.映射路径怎么填得好好考虑,只为了学习的话,配置个指定后缀的url最好了,省得到时候还得对各种资源文件做处理。

2.最好使用高版本的web.xml,为了减少以后jsp的el表达式的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值