一:概念
servlet是Java Servlet的简称,成为小服务程序或服务连接器,说白了就是用java编写的运行在支持java的服务端的一个小程序
二:创建Servlet程序的顺序(服务器为Tomacat)
- 在Tomacat的webapps下创建项目的文件夹(如test_servlet)
- 在该项目文件夹下创建文件夹WEB-INF(文件夹名称必须为WEB-INF)和打开的HTML【也可创建文件夹Lib:存放项目引用的第三发jar包】
- 在文件夹WEB-INF下创建文件夹classes(文件夹名称必须为classes)和配置文件web.xml
- 在classes文件夹下创建java编译好的class文件
三:编写Servlet程序
html:
请求方式默认为get,如果你在servlet写的是doGet()方法,但客户端写的请求方式为post方式,可以在doPost()方法中调用doGet()方法
web.xml
请求顺序:程序根据HTML的action请求路径,在web.xml的映射中找到对应的路径url,根据url又找到servlet-name,又根据servlet-name在servlet中找到我们编写的servlet类。其中/表示在根目录下查找servlet,根目录就是指的我们项目文件夹下,它会自动的去“ 项目名\WEB-INF\classes”目录下查找servlet,其中任意一个文件夹名写错,都不会找到,其中WEB-INF,classes文件夹名是固定的
四:servlet响应过程
找到class文件后,先实例化类,然后调用service()方法,service方法会判断执行doPost()还是doGet(),最后才执行对应的方法,然后请求客户端传过来的参数,去请求数据库。
servlet只实例化一次
五:声明周期
- 加载Servlet类并实例化new
- 初始化init
- 处理请求service doGet,doPost
- 退出服务 destroy()
实例化servlet类时,会调用init()方法,此时就有了生命,当server不在需要servlet时(一般当server关闭时),server会调用servlet的destroy()方法,此时声明就结束了
- servelt只实例化一次
- init方法也只执行一次
- servlet不是线程服务(当一次请求实例化还未完成时,另一个请求可以进来)
总结
只有明白原理后,当你遇到问题时,才能更准确的定位到错误之处