JavaWeb——Day03_1

*1.Servlet快速入门

动态web资源开发技术。

sun公司servlet  jsp。


一、Servlet
    1.sun提供的一种动态web资源开发技术.本质上就是一段java小程序.可以将Servlet加入到Servlet容器中运行.
    *Servlet容器 -- 能够运行Servlet的环境就叫做Servlet容器. --- tomcat
    *web容器 -- 能够运行web应用的环境就叫做web容器 --- tomcat
    
    2.
        写一个类实现sun公司定义的Servlet接口
        将写好的类配置到tomcat中的web应用的web.xml中,(配置对外访问路径)
    

















javaee...

servlet需要的架包。导进来 classpath

在tomcat里面有内置的架包。










第二部:将写好的类配置到tomcat中的web应用的web.xml中,(配置对外访问路径)








以上就是如何开发一个servlet。


IDE-MyEclipse下如何开发一个servlet呢?





















------------------------------------------------------------

今天的问题是开发一个servlet!






*2.Servlet的调用过程_Servlet的生命周期

图1、




图2.


。。。。


如果访问一个静态资源呢?比如图片。




Servlet运行过程:

lServlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
装载并创建该Servlet的一个实例对象。
调用Servlet实例对象的init()方法。
创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。 


Servlet声明周期

l生命周期的概念:一件事物,什么时候生,什么时候死,以及在其生存阶段的某一时点会触发的事件,统称为该事物的生命周期。
lServlet的生命周期:
通常情况下,服务器会在Servlet第一次被调用时创建该Servlet类的实例对象(servlet出生);一旦被创建出来,该Servlet实例就会驻留在内存中,为后续请求服务;直至web容器退出,servlet实例对象才会被销毁(servlet死亡)。
在Servlet的整个生命周期内,Servlet的init方法只有在servlet被创建时被调用一次。
而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
servlet被销毁前,会调用destroy() 方法。 

*3.Servlet的继承结构_修改Servlet模版

.Servlet的继承结构

        Servlet接口 -- 定义了Servlet应该具有的基本方法
            |
            |--GenericServlet --通用基本Servlet实现,对于不常用的方法在这个实现类中进行了基本的实现,对于Service设计为了抽象方法,需要子类去实现
                    |
                    |--HttpServlet --在通用Servlet的基础上基于HTTP协议进行了进一步的强化:实现了GenericServlet中的Service方法,判断当前的请求方式,调用对应到doXXX方法,这样一来我们开发Servlet的过程中只需继承HttpServlet ,覆盖具体要处理的doXXX方法就可以根据不同的请求方式实现不同的处理.一般不要覆盖父类中的Service方法只要覆盖doGet/doPost就可以了


0---------注,推荐修改一些Servlet的模板。6的和8,的修改方式不一样,


*4.Servlet细节问题










问题来了。优先级。







<serlvet>可以配置<load-on-startup>可以用来指定启动顺序










(5)线程安全问题
            由于默认情况下Servlet在内存中只有一个对象,当多个浏览器并发访问Servlet时就有可能产生线程安全问题
            解决方案:
                加锁--效率降低
                SingleThreadModel接口 -- 不能真的防止线程安全问题
                最终解决方案:在Servlet中尽量少用类变量,如果一定要用类变量则用锁来防止线程安全问题,但是要注意锁住内容应该是造成线程安全问题的核心代码,尽量的少锁主内容,减少等待时间提高servlet的响应速度


--------------------------前四节小结------------------

一、Servlet
    1.sun提供的一种动态web资源开发技术.本质上就是一段java小程序.可以将Servlet加入到Servlet容器中运行.
    *Servlet容器 -- 能够运行Servlet的环境就叫做Servlet容器. --- tomcat
    *web容器 -- 能够运行web应用的环境就叫做web容器 --- tomcat
    
    2.
        写一个类实现sun公司定义的Servlet接口
        将写好的类配置到tomcat中的web应用的web.xml中,(配置对外访问路径)
    
    3.Servlet的调用过程/生命周期
    
    
    4.Servlet的继承结构
        Servlet接口 -- 定义了Servlet应该具有的基本方法
            |
            |--GenericServlet --通用基本Servlet实现,对于不常用的方法在这个实现类中进行了基本的实现,对于Service设计为了抽象方法,需要子类去实现
                    |
                    |--HttpServlet --在通用Servlet的基础上基于HTTP协议进行了进一步的强化:实现了GenericServlet中的Service方法,判断当前的请求方式,调用对应到doXXX方法,这样一来我们开发Servlet的过程中只需继承HttpServlet ,覆盖具体要处理的doXXX方法就可以根据不同的请求方式实现不同的处理.一般不要覆盖父类中的Service方法只要覆盖doGet/doPost就可以了
    
     5.Servlet的细节
        (1)一个<servlet>可以对应多个<serlvet-mapping>,从而一个Servlet可以有多个路径来访问
        (2)url-partten中的路径可以使用*匹配符号进行配置,但是要注意,只能是/开头/*结尾或*.后缀这两种方式
            ~由于*的引入,有可能一个路径被多个urlpartten匹配,这是优先级判断条件如下:
                哪个最像找哪个
                *.后缀永远匹配级最低
        (3)<serlvet>可以配置<load-on-startup>可以用来指定启动顺序
        (4)缺省Servlet:如果有一个Servlet的url-partten被配置为了一根正斜杠,这个Servlet就变成了缺省Serlvet.其他Servlet 都不处理的请求,由缺省Servlet来处理.
        其实对于静态资源的访问就是由缺省Servlet来执行
        设置404页面500页面等提示页面也是由缺省Servlet来执行
        通常我们不会自己去配置缺省Servlet
        (5)线程安全问题
            由于默认情况下Servlet在内存中只有一个对象,当多个浏览器并发访问Servlet时就有可能产生线程安全问题
            解决方案:
                加锁--效率降低
                SingleThreadModel接口 -- 不能真的防止线程安全问题
                最终解决方案:在Servlet中尽量少用类变量,如果一定要用类变量则用锁来防止线程安全问题,但是要注意锁住内容应该是造成线程安全问题的核心代码,尽量的少锁主内容,减少等待时间提高servlet的响应速度



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值