在开始之前,我们必须对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表达式的使用。