最近有人找到我,让我帮他写一个javaweb作业,说帮我介绍对象。我想我new了那么多对象,还没有一个真实的对象,想一想帮介绍对象就激动,我就答应了。
我先喝口爽歪歪就像我的心情一样,我一想javaweb项目无非就是servlet嘛,小意思,我想了想如果要一个一个写也太麻烦了,想着既然不用spring框架,为啥不能自己手写一个简单的呢,于是说干就干。
我想了想大概思路:
1.先将所有以特定结尾的请求用一个servlet处理,在处理之前先将特定注解的类和方法扫描加载到一个特定容器中。
2.将根据接收到的请求去查找加载的方法中的注解和对应的类和方法,根据查找到的方法执行相应方法,让后将对应方法的执行结果做相应返回。
想了想,好像就这么简单,感觉好激动,先嗦一口旺仔。
下面我来讲解一下我的具体实现思路,具体代码可以去我的代码仓库下载。
1.创建javaweb项目
我首先用gradle创建一个javaweb项目,因为我以前一直用的是maven,听说这个很牛逼所以我就试了一下,感觉差不多。
2.创建一个servlet,并且在web.xml中配置
3.自定义的类的讲解
其中我们在annoation包下定义了三个注解
requestMapping其中的value是记载着访问路径和method是记载访问方法类型的注解,该方法返回值必须为string类型,返回的是视图界面。
response和requestMapping差不多,不过其返回值可以不为string类型,返回的是json对象字符串
阿里牛逼是用于表示这个类是不是应该作为试图访问控制类,为啥用这个名字,因为嫖的阿里东西有点多,我是个贪图小便宜的人,主要是穷。
method包下的HandlerMapping是用于将类获取特定类和类里的方法和标记是不是返回是不是视图返回存入到指定map容器中,而MVCMapping就是用来记录这些的。
4.运行流程简单概述
1)首先我们通过LoadServlet提前将需要加载的类,访问地址,方法和返回类型加载完毕
2)然后我们通过service查找相应的访问路径所对应的信息
3)再判断对应的访问类型是否正确
4)执行方法,其中执行方法的参数需要将接收的参数转化成想要的参数,目前只支持几种类型(主要原因是不会写)得到方法返回结果
5)根据返回类型将结果以相应格式返回
5.运行展示