Servlet生命周期

Servlet特征
Servlet的生命周期:
什么是Servlet的生命周期
.容器如何创建Servlet对象,如何为Servlet对象分配资源,如何调用Servlet对象的方法
来处理请求,以及如何销毁Servlet对象的整个过程.

.阶段一:实例化
.什么叫实例化:
-容器调用Servlet对象的构造器,创建一个Servlet对象.
什么时候实例化Servlet:
情形一:开始的时候容器中没有Servlet对象,收到请求后创建Servlet对象
情形二:容器启动之后就立即创建相应的实例
<load-on-startup>1</load-on-startup>
值可以为正数,0,以及负数
-当为0和正数的时候:表示容器启动时加载该Servlet,值越小,优先级越高,
如果值相等,按web.xml中配置的顺序加载
-当为负数表示访问时加载.

阶段二:初始化
什么是初始化:
-容器在创建好Servlet对象之后,会立即调用对象的init方法
-一般情况下,我们不用写init方法,因为GenericServlet已经提供了init方法的
实现(将容器传递过来的ServletConfig对象保存下来,并且提供了getServletConfig方法
列获得ServletConfig对象.)

init方法只会执行一次

阶段三:就绪
-容器收到请求之后调用Servlet对象的service方法()来处理请求

阶段四:销毁
-容器依据自身的算法删除Servlet删除前会调用destroy()
-只会执行一次
-可以重写(override)destroy方法实现自己的处理逻辑
-应用程序卸载时一定会调用destroy()方法.

什么是Servlet上下文?
-容器启动之后,会为每一个web应用创建唯一的一个符合ServletContent接口的对象,
该对象就是Servlet上下文.
.特性:
唯一性:(一个web应用对应一个Servlet)
一直存在:(只要容器不关闭,应用没有被卸载,Servlet上下文就一直存在)

如何获得Servlet上下文对象.
方式一:
-通过ServletConfig提供的getServletContext()
ServletContext config = getServletConfig().getServletContext();
方式二:
-通过httpSession提供的getServletContext()
ServletContext sc = request.getSession().getServletContext();

方式三:
通过GenericServlet提供的getServletContext()
ServletConfig config = getServletContext();

方式四:
通过FilterConfig提供的getServletContext()

servlet上下文的作用:
.作用一
-使用setAttribute绑定数据

.作用二
-使用getAttribute获取绑定数据

特点:
Servlet上下文绑定的数据可以被整个应用上的所有组件共享,并且一直可以访问

练习:实现访问网站总人数的记录,以及基于某一特定起点的访问记录

由于网站中资源较多,想要保留每一次的访问技术则需要一个从应用一启动就存在
的空间,并且应用中的所有资源能访问到这个存储空间.
Servlet上下文对象.

线程安全问题:
.容器收到请求之后,会启动一个线程来进行相应的处理.
.默认情况下,容器会为每个Servlet创建一个实例
.如果同时有多个请求访问同一个Servlet,则肯定会有多个线程访问这个Servlet实例
.如果这些线程要修改Servlet实例的某个属性,就有可能发生线程安全问题.

如何解决线程安全问题:

synchronized(this){
    count++;
    try{
        Thread.sleep(1000);
    }catch(InterruptedException e){
        e.printStackTrace();
    }
    System.out.println(Thread.currentThread().getName()+","+count);
    }
}

jsp基本语法:
JSP的由来
为什么会有jsp规范:
,Servlet技术产生之后,在使用时最麻烦的是使用大量的out.print语句输出页面,
这样的形式在系统变更,维护,预览效果时都不能方便快捷的完成任务,于是推出了
JSP这种技术,用来将Servlet中负责显示的语句抽调出来

什么是jsp:
Sun公司制定的一种服务器端动态页面技术的组件规范,jsp是一个以".jsp"为后缀的
文件,在该文件中,主要是HTML和少量的java代码.jsp文件会被容器转换成一个Servlet
类,然后执行

如何编写jsp
.1.写一个以.jsp为后缀的文件
.2.在该文件中,可以包含如下内容
-html(css,JavaScript)
-注释
-Java代码
-指令
-隐含对象

jsp页面中的html代码
.像编写html页面一样编写即可
.作用:控制页面在浏览器中显示的效果
.转译成Servlet时的规则:
-成为service方法中的out.print/out.write语句中的内容

jsp页面中的注释
.语法:
1.<!--注释内容-->
HTML注释,注释中的内容如果包含java代码,这些代码会被执行

2.<%--注释内容--%>
JSP特有的注释,如果注释的内容中包含java代码,这些java代码会被忽略

3.jsp页面中的java代码包含以下三种形式:
-jsp表达式
-jsp小脚本
-jsp声明
.编写位置:
-页面的任意位置
.作用
控制页面中可变内容的产生

jsp表达式:
语法规则 :<%=......%>
.合法内容:变量,变量加运算符组合的表达式,有返回值的方法
.转译成Servlet时的规则:在service()方法中用out.print语句输出该变量,表达式,方法的值

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值