将servlet数据传到html_JavaEE学习——Servlet的生命周期

2b4ece1f04b302f37dd422a5cc143a3c.png

手写“迷你Tomcat”能让我们更好的理解Servlet的生命周期:

皮浪养的一只猪:Java学习之手写Tomcat“迷你汤姆猫”​zhuanlan.zhihu.com
3ec217fa448e6e556c23d7f061bf44c6.png

Servlet的执行流程:

我们拿一个自己创建的LifeServlet来举例说明

关键技术:XML解析 + 反射

*

* 入口:客户端浏览器url地址栏发起请求:http://127.0.0.1:8080/myservlet1/servlet/LifeServlet访问

*

* 1.类加载

0.通过解析xml文件得到对应的数据

* 1.截取url中的servlet路径:/servlet/LifeServlet

* 2.在web.xml中查找<url-pattern>的值是/servlet/LifeServlet

* 找不到,404 路径错误

* 3.找到了,根据<url-pattern>找对应的<servlet-name>,发现是LifeServlet

* 4.在 <servlet>寻找<servlet-name> 是LifeServlet

* 5.找到后,查找同级的<servlet-class>,并得到值“com.bjsxt.servlet.LifeServlet”

* 6.Class clazz = Class.forName(“com.bjsxt.servlet.LifeServlet”);

*

* 2. 创建Servlet对象(实例化)

* //new LifeServlet();

* Object obj = clazz.newInstance(); 使用反射来创建对象

* 3.调用init(),初始化方法

* Method m1 = clazz.getMethod("init"); 通过反射执行方法

* m1.invoke(obj);

* 4.调用service(),真正做事的方法

* Method m2 = clazz.getMethod("service",ServletRequest.class,ServletResponse.class)

* m2.invoke(obj,request,response); 通过反射执行方法

*

* 5.调用destroy(),servlet销毁的方法,当服务器关闭的时候销毁 servlet,触发 destroy 方法的执行

* Method m3 = clazz.getMethod("destory") 通过反射执行方法

* m3.invoke(obj);


问题1:xml是什么东东?

可扩展标签语言

和HTML的相同点:都是标签语言

不同点 : 1.html的标签含义都是固定的,xml中标签是自定义的

2.作用不同:html是网页内容,有浏览器解释展示的。xml主要用来存储数据的(开发中常用来存储配置信息)

3.html语法不严格,xml是严格语法的。

问题2:何时加载Servlet类?

情况1:客户端发起对该Servlet的请求 (懒加载),(第一次)

情况2:项目启动的时候自动加载 (非懒加载)

<load-on-startup>0</load-on-startup>

问题3:doGet()和doPost() 与service()关系?

* service() 根据用户请求的类型的不同,调用相应的方法

* get请求----doGet()

* post请求----doPost()

如下图,这是之前手写“迷你Tom猫”的时候的那个抽象servlet

b357444def21ef0cac6c334891cf7909.png

总结:还得再复习手写“迷你Tom猫”的知识,让servlet学的更好,加油!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值