servlet的概念
Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat)
Tomcat是一个容器
容器能接受用户传递的参数(也就是实现数据的交互),还需要容器有专门的程序实现数据交互,这样的程序叫做服务器小程序,该程序就叫servlet。
servlet的作用:
主要是处理客户端的请求并将其结果发送到客户端。
(要进行实现servlet的编写需要继承一个抽象类"httpservlet")
servlet的生命周期
加载类--->实例化--->初始化--->请求处理--->销毁
加载类:
把servlet类的.class文件中的数据读到内存中,
实例化:
Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了 Servlet的初始化配置信息。Servlet容器创建一个servlet对象
初始化:
Servlet容器调用servlet对象的init方法进行初始化
运行处理过程:
当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和servletResponse对象。
销毁:当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象
注意:在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数。
servlet的内置对象
1,request 转译后对应HttpServletRequest/ServletRequest对象
客户端的请求参数都被封装到这个对象里面
2.response 转译后对应HttpServletRespons/ServletResponse对象
对客户的请求做出动态的响应,向客户端发送数据。
3.session 转译后对应HttpSession对象
当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失
4.application 转译后对应ServletContext对象
服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。
5.转译后对应JspWriter对象,其内部关联一个PringWriter对象
out 对象是一个输出流,用来向客户端输出数据。out对象用于各种数据的输出。
6,page 转译后对应this
7.config 转译后对应ServletConfig对象
常用的方法有getInitPararneter(String paramNarne) 及getInitPararneternarnes()
8.exception 转译后对应Throwable对象,代表由其他JSP页面抛出的异常对象,只会出现于JSP错误页面(isErrorPage设置为true的JSP页面)
9.pageContext 转译后对应PageContext对象,它提供了JSP页面资源的封装,并可设置页面范围属性
servlet的单例模式
servlet类是单例的
如何解决servlet的线程安全问题
1、实现singleThread接口,实现了这个接口,容器保证在同一时刻内只有一个线程访问该实例
2、对可能引起并发的地方用synchronized关键字同步代码块
3、避免使用实例变量,多用局部变量,将数据存储放在方法中
servlet监听器
在Servlet中定义了多种类型的监听器,它们用于监听的事件源分别是ServletContext、HttpSession和ServletRequest这三个域对象
Servlet中的监听器的分类
一类:监听三个域对象的创建和销毁的监听器(三个)
二类:监听三个域对象的属性变更(属性添加、移除、替换)的监听器(三个)
三类:监听HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)的监听(两个)
servlet的过滤器
Servlet API中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter。通过Filter技术,开发人员可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截。
原文:https://www.cnblogs.com/zzjlxy-225223/p/10752993.html