手写简易 SpringMVC

手写 SpringMVC

常规的 JavaEE 开发方式,需要对不同请求,都新建一个 Servlet,比如说登录、登出,就需要两个 Servlet ,使得开发十分的繁琐

这里,我们模仿 SpringMVC 的开发模式,去设计实现一个简易的 SpringMVC,一是为了简化我们的开发流程,二是为我们后面学习 SpringMVC 打下基础

框架的大致流程如下:

image-20210524142521735



DispatcherServlet

web.xml:

我们要为这个 DispatcherServlet ,设置路径,不等所有请求都走 DispatcherServlet,web.xml 中设定,只有请求后面跟 .do 的,会走 DispatcherServlet

这里的 <param-value>application.properties</param-value>,放置的是配置文件的路径,这里,我是将配置文件方式在 resources 下的

image-20210524165714258

<servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>top.faroz.mvc.DispatcherServlet</servlet-class>
        <!--初始化参数,写上配置文件的路径-->
        <init-param>
            <param-name>ContentConfigLocation</param-name>
            <param-value>application.properties</param-value>
        </init-param>
        <!--项目一启动,就去加载这个servlet-->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

DispatcherServlet:

  • init()

init()方法中,要读取 web.xml 中,配置文件的路径,然后在我们的映射池中,去加载,为请求和对应的方法做映射

  • service()

service()起作用的前提,是映射池 HandlerMapping 中的加载已经完成,我们以用户的请求,作为 key,去映射池中,获取对应的方法

@WebServlet(name = "DispatcherServlet")
public class DispatcherServlet extends HttpServlet {
   

    @Override
    public void init(ServletConfig config) throws ServletException {
   

        //获取配置文件路径
        String path = config.getInitParameter("ContentConfigLocation");
        System.out.println("获取的文件路径为:"+path);
        InputStream is = this.getClass().getClassLoader().getResourceAsStream(path);
        HandlerMapping.load(is);
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FARO_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值