您的位置:首页 > 编程语言 > Java开发

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

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

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>


我们可以发现三点:

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

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

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

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

package com.wbh.mymvc.servlet;

/**
* 请求调度核心类
*
* @author wbh
*/
public class MyDispatcherServlet extends HttpServlet {

private Properties p;

@Override
public void init() throws ServletException {
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}

}


DispatcherServlet本质便是一个Servlet,继承自HttpServlet,几个需要重写的方法自不必多说。另外,别忘了你需要一个配置文件,这里我选择了properties当配置文件,为什么?因为它功能简陋,看着眼睛不容易花。只为了学习,一切从简。接下来就可以将它配置在web.xml文件中了:

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>com.wbh.mymvc.servlet.MyDispatcherServlet</servlet-class>
<init-param>
<param-name>mvcConfigLocation</param-name>
<param-value>/WEB-INF/classes/mymvc.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>


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

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

2.最好使用高版本的web.xml,为了减少以后jsp的el表达式的使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springmvc 源码
相关文章推荐