JavaWeb——Servlet
Servlet概述
Servlet是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。在Java中想要创建Servlet需要实现Servlet接口,一般情况下我们只需要继承HTTPServlet类并重写部分方法即可。需要注意的是Servlet和GenericServlet并不特点与任何协议,但HttpServlet仅限于HTTP协议
Servlet生命周期
Servlet被部署在应用服务器中,由web容器控制Servlet生命周期,其生命周期主要分为初始化、服务与终止三个阶段。
- 初始化阶段:在Servlet被创建后,仅会调用一次Servlet的init()方法,以初始化Servlet对象,在整个Servlet的生命周期之间init()方法仅被调用一次
- 服务阶段:Servlet被初始化之后就可以用来处理用户的请求,当收到请求时,Servlet会调用service()方法来处理客户请求,service方法会根据用户的请求匹配相应的处理方式(包括GET、PUT、POST、DELETE等)
- 终止阶段:Servlet一旦被加载,一般很少会从容器中删除,直至服务器关闭或重新启动。当服务器关闭或重启时会调用Servlet的destroy方法来销毁。调用destroy方法后,Servlet会进行关闭数据库连接,停止后台线程、将Cookie更新至磁盘,以及其类似的清理活动
处理请求——doGet()、doPost()方法
用户发送的HHttp请求包括GET、POST、PUT、DELETE等,但使用最多的通常还是get与post,在HttpServlet中已经存在doGet与doPost方法,但原方法只会抛出错误信息,因此我们想要使用自己的Servlet必须覆盖doGet与doPost方法。要注意的是get和post只是请求实现的不同的两种方式,因此可以互相调用
doGet()
get请求提交的数据有大小限制,通常为1024字节。doGet方法在传递数据时会将数据按照key,value 的形式拼接在url后面,因而会直接将数据显示在地址栏,难以保证安全性。此外get请求在刷新时,不会有任何提示
doPost()
post请求提交的数据没有大小限制,并且也不会将参数显示在url中,相对于get请求更为安全,并且get请求在刷新时会弹出提示框询问是否需要重新提交