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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值