liughMVC项目(简易SpringMVC)项目解读

项目包

  • annotation包:自定义注解,这里主要还是模仿的Spring mvc注解的命名,为了区分前面都加了一个My***
  • core包:测试controoler
  • servlet:自定义servlet(框架核心实现)
  • resources:配置文件(maven定义)
    项目结构

实现

  • 项目主要的实现在MyDispatcherServlet自定义Servlet中,web.xml配置:
    web.xml配置

    • MyDispatcherServlet中定义了6个自定义变量(容器),根据变量名称可知道主要做什么的
      自定义变量
    • 第一步:在初始化Servlet的时候进行配置加载,通过类加载器获取到配置,设置到上文代码中的properties中
      加载配置
      加载配置主要代码
    • 第二步:获取到的配置信息(递归扫描包),加载到classNames这个变量中
      扫描包

    • 第三步:通过第二步获取到的所有class名称,判断是有自定义的MyControoler注解,存在则初始化(反射)加入到ioc

请求之后地址解析

  • 可以看到post和get都是使用的doDispatch方法处理,处理的思路是通过获取对应url 的method参数列表解析类型参数通过反射调用method,这里只处理了HttpServletRequest,HttpServletResponse,String 其他类型可以自己做个解析
    dopost
  • 主要代码
    url解析

最后

  • 其中一段代码(首字母转换小写)看我很是懵逼(基础太差),我提出来,不知道还有人跟我一人的懵逼么。参考博客:JAVA中的char类型,和 ASCII码表有关系
    首字母小写
  • 还有个问题charArray[0] += 32; 写成 charArray[0] = charArray[0] + 32;为什么报错其实看编译代码就知道,charArray[0] + 32会小转大到int类型,而charArray[0] += 32; 看如下class编译代码就懂了
    编译文件

总结

这里项目虽然很简单,但是比看Spring源码看着好很多,对于目前的我来说源码看得很吃力,看过Spring 源码之后(并没读懂),再来看这个其实就轻松多了,虽然算个简易的半成品但是看到了自己的不足,以前面试有人问我能不能自己手写一个Spring mvc框架,当时懵逼,现在看来其实简易的框架也没那么复杂。还是自己基础不好,对Servlet的生命周期和数据处理没有好的理解。
项目地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

niubility锐

觉得有用的话鼓励鼓励

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

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

打赏作者

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

抵扣说明:

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

余额充值