1 掌握 Servlet的运行流程
2 掌握Servlet的在web.xml中的配置
3 掌握Servlet的生命周期
4 掌握Servlet中doGet doPost和service方法
1 掌握 Servlet的运行流程
1) 打开 Myeclipse 并创建工作空间
2)点击 file 选择—>new—>web project—>输入项目名,点击 finish
3)在 src 下创建包 com.bjsxt.servlet.
4)在包下创建一个普通 java 类 MyServlet,并继承HttpServlet
5)在 MyServlet 类中覆写 service 方法。
6)在 webRoot 下的 WEB-INF 下找到 web.xml 文件并配置,如下。
7)打开 tomcat 的安装目录,在 webapps 目录下新建文件夹,文件夹名为 project,并将项目源码webRoot 下的内容全部复制到该文件夹下。
(可以使用MyEclipse集成tomcat和项目部署来实现自动更新webRoot中的 源码)
其中求地址localhost:8080/project/s的每个部分的作用
localhost:8080 地址ip ,/project 虚拟项目名 , /s servlet别名
![c210e076b569795e26c4f0a241c9f5bc.png](https://i-blog.csdnimg.cn/blog_migrate/553fe14054892dcea73bf7c036ebd12c.jpeg)
![f0ce16e22abb2ade67d45b663bd5c905.png](https://i-blog.csdnimg.cn/blog_migrate/b0bae722434a91b51651dbf0d03cacd1.jpeg)
2 掌握Servlet的在web.xml中的配置
![e37caf26c0b08fc3b5d04895c6d6f81a.png](https://i-blog.csdnimg.cn/blog_migrate/a946e533d2f2564edaa7325777ed02c3.jpeg)
注意: 多个servlet配置同一个url-pattern会报的错误
报illegalArgumentException非法参数异常
3 Servlet的创建
普通java类MyServlet继承HttpServlet之后,就不再是普通Java类,而是一个servlet
(3.1)为什么Servlet只会创建一个
为了节省内存,每个用户请求都会引发新的线程,servlet只会创建一个 实例化对象,该独享是线程共享的.
![d9bb3dbbe34e68afcc8debd2abec3748.png](https://i-blog.csdnimg.cn/blog_migrate/1cd3fd795e6dafa0f501723c7eef1334.jpeg)
注意1:服务器在接受到浏览器的请求后,会开辟一个线程来处理请求, 在线程中调用对应的Servlet进行处理。
注意2:服务器会调用servlet处理请求,但是一个servlet服务器只会创建 一个实例化对象且该对象是线程共享的。
4 Servlet的生命周期
从第一次被调用到服务器关闭
验证:
init方法 :servlet被初始化创建的时候调用
service方法:处理请求的时候
destory方法 :servlet被销毁的时候。
当服务器关闭的时候销毁servlet,触发destroy方法的执行
注意:
我们可以在web.xml中配置load-on-startup来设置Servlet的加载时机为服务器启动。
生命周期就变为从服务器开启到服务器关闭
![8c729154109ac9c7ac8ac1a3a069bb0b.png](https://i-blog.csdnimg.cn/blog_migrate/bbfe1c94ff4f6df93599759207129afa.jpeg)
个人心得: 在处理请求时tomcat会先对servlet进行实例化和初始化的创建,这时服务器会先
调init方法,完成对servlet的初始化设置.然后再调service方法处理请求, 注意初始化完成之
后,再执行时不再初始化. 说明,一个servlet只实例化创建一次,当servlet在服务器关闭时才
会被销毁.
服务器关闭时,servlet被销毁了才触发的destory方法的执行,不是因为服务器关闭了,才调的destory.
5 doGet和doPost和Service方法的区别
doGet方法:
在没有service方法下,如果是get方式请求,那么所调用的 处理请求的方法是doget方法
doPost方法:
在没有service方法下,如果是post方式请求,那么所调用的 处理请求的方法是doPost方法
service方法:
不管是 get 方式还是 post 方式的请求,如果 Servlet 类中 有service 方法,则优先调用 Service 方法。(无论是什么类型的请求方式, 服务器都会优先执行service方法。)
注意有时会出现405异常:
请求方式和servlet中的方法不匹配所造成的。比如get请求方式,却只 有doPost()方法,这时会报错405异常 .
(5.1) doGet和doPost和service方法调用的本质
1)servlet中没有声明service方法的时候,会根据请求方式调用对应的方法进行请求处理,
2)如果在servlet中没有声明对应的请求处理方法,则会报405错误。
tomcat服务器其实只认识service方法,如果我们自己声明的servlet中没有覆写service方法,则会执行HttpServlet中的service方法,而HttpServlet中的service方法会根据请求方法调用对应的doXX()方法执行请求处理。
6 下面是常见的异常错误总结
404的原因。
原因一:在请求地址中的servlet的别名书写错误。
原因二:虚拟项目名称拼写错误
500错误的原因
Xml中<select-class>全限定类名</select-class>的全限定类名写错或者因为service方法体的代码执行错误导致
405的原因
请求方式和servlet中的方法不匹配导致出现错误。