Servlet

Servlet:

           一、定义: 运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。

          、作用:通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

            、执行过程:

        

                       重点:这个斜杠/等价于:http://localhost:8080/工程名/          到这个位置的Url。

       四、生命周期:

                 实例化-->初始化-->服务->销毁:对应的方法

                   1@、实例化:第一访问

                public ServletDemo1() {
System.out.println("实列化");

                    2@、初始化:客户端第一次访问时调用,该方法。只会执行一次。

                    @Override
public void init(ServletConfig arg0) throws ServletException {
System.out.println("-----------------初始化方法---------------");
config = arg0;

}

                    3@、客户端每一次访问都会执行一起该方法。

                    @Override
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("------------服务:-------------"+"这个Servlet的名字:"+config.getServletName()+"获得配置信息"+config.getInitParameter("encoding"));

}

                4@、在服务器中卸载工程。或者正常的关闭服务器。刚方法就运行。

                @Override
public void destroy() {
System.out.println("-----------销毁方法-----------");


}

        注意:创建时间以及初始化方法。可以改变。需要在xml中配置:

                   改变:配置后随着服务器的启动而实例化和初始化。

                     <servlet>
  <servlet-name>ServletDemo1</servlet-name>
  <servlet-class>com.ServletDemo.ServletDemo1</servlet-class>
  <init-param>
  <param-name>encoding</param-name>
  <param-value>GBK</param-value>
  </init-param>

  <load-on-startup>2</load-on-startup>

    <!-- 这个Servlet随着服务器的启动而实例化,初始化。2表示创建的优先级,自然数就行 -->

  </servlet>     

            五、三种实例化方式

                1、实现javax.servlet.Servlet接口(第一个案例就是。)

            

                2、继承javax.servet.GenericServlet类(适配器模式)

                适配器设计模式:(当我们想要使用,某个接口中的特定的方法,而该接口中有很多的方法,我们就设计一个间类来实现这个接口,而我们只需要继承这个类就行。这样我们就不需要去实现所有的方法。就能调用我们真正想要实现的方法。通常这个中间类叫做转换器,转接头。)  

            抽象类GenericServlet实现了Servlet, ServletConfig,这两个接口。

                重要方法:

                            getInitParameter("");

                            getServletContext()

                             getServletConfig()

                            只有一个抽象方法service()。

                            并没有重写service()方法,而是接着抽象。

           和抽象方法: public abstract void service(ServletRequest req,ServletResponse res)
            3、继承javax.servlet.http.HttpServlet类(模板方法设计模式)
                重点:这是我们开发中常用的。
                httpServlet是一个抽象类继承了GenericServlet,一个没有抽象方法的抽象类。
                
                    重要方法:

                                          doGet();

                                           doPost();  

                                          两个Service()方法:

            

                    public void service(ServletRequest req, ServletResponse res) 

                            public void service(HttpServlet request,HttpResponse response)

                 服务器访问,到Servlet的响应过程:

                            服务器扫描Xml找到HttpServlet的实现类,创建实例:

                                        javax .servlet.Servlet servlet = new HttpServlet();

                                        实例化,初始化等待被客户端访问。

                                        客户端访问:

                                                   1、 调用ServIce()方法:这个service是从父类继承下来的方法{

                                                                                            由多肽的知识就知道,这儿调用的只能是

                                                                                            从父类继承下来的service。

                                                                                }

                                                   2、执行自己的Service方法。

                                                   3、根据请求的方式,调用相应的方法:我们常用的DoGet(),DoPost()。

                                               注意:这儿通过Service我们已经得到最重要的两个对 象:    HttpRequest,HttpResponse。

         六、映射问题

                        1.一个Servlet可以在Xml中配置多个,ServletMapping。

                         2.两种固定格式:

                                    通配符*,例如*.do

                                    (/)正斜杠:

                          3、优先级问题:

                                       绝对匹配-->  /开头匹配 --> 扩展名方式匹配

       七、线程安全问题

                              避免使用全局变量。


                        

        

                                                                       

    


                                          


                

 
          

                            

            

                          


    

    

            


            

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值