servlet

本文详细介绍了Servlet的概念、生命周期及其在web.xml中的配置方式,并探讨了不同访问路径的配置方法。
 

1.什么是servlet?
  3点:* 是用java编写的web应用组件
       * 主要用于实现动态网页的输出
       * 由servlet容器管理
2.servlet的生命周期?
  答:intit(),service(),destroy()
init()
* init方法第1个执行,执行一次
  * * 该方法有servlet容器调用
  * * 初始化方法,serlvet启动的时候,执行一次
  * * servletConfig是接口,由tomat服务器的开发者实现
  *      * 对应的对象org.apache.catalina.core.StandardWrapperFacade@1712b3a
  *      * 底层的代码:public final class StandardWrapperFacade  implements ServletConfig
  *  * servlet容器先创建servletConfig[StandardWrapperFacade]对象, 该对象中封装了servlet的初始化信息
  *    然后servlet容器调用init方法时,把该对象作为实参传递给该方法的形参
service()
 * service方法第2个执行,执行多次,请求一次执行一次
  * * 该方法有servlet容器调用
  * * ServletRequest:接口
  *     * req:请求的对象,该对象中封装了客户端传递过来的所有的信息
  *     *  org.apache.catalina.connector.RequestFacade@74cb02
  *    
  *     * public interface HttpServletRequest  extends ServletRequest
  *       public class RequestFacade implements HttpServletRequest
  *      
  * * ServletResponse:接口
  *     * res:响应的对象:该对象封装了服务器要传递给客户断的所有的信息
  *     * org.apache.catalina.connector.ResponseFacade
  *    
  *     * public interface HttpServletResponse extends ServletResponse
  *       public class ResponseFacade  implements HttpServletResponse
  *      
  *  * servlet容器先创建两个对象,一个请求对象request,一个响应对象response
  *    servlet容器调用service,传递请求对象request,响应对象response作为该方法实参传递给该方法的形参 

3.注意这几个接口:Servlet,GenericServlet,HttpServlet以及他们之间的关系
    接口HttpServlet实现了GenericServlet,GenericServlet实现了Servlet
4.servlet的运行过程

5.servlet的在web.xml中的配置,同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
  servlet的注册:
 
   * 配置一
       * 一个servlet配置一种访问路径/xxx格式
           <servlet>
          <!--配置servlet的注册名称,起个别名-->
          <servlet-name>TestServlet</servlet-name>
          <!-- 配置servlet的完整类路径 -->
          <servlet-class>cn.itcast.web.TestServlet</servlet-class>
          </servlet>
     
          <!-- 配置serlvet映射 -->
        <servlet-mapping>
           <!-- 引用上面配置好的servelt的注册名称 -->
           <servlet-name>TestServlet</servlet-name>
           <!-- 配置对外访问路径,就是地址栏中写的路径,直接映射到根路径下 -->
           <url-pattern>/testSerlvet</url-pattern>        
        </servlet-mapping>
      
        * 使用方式 http://localhost:808/day05/testSerlvet
       
    * 配置二
        * 配置格式*.do *.action格式 ,前面不用加"/"
             <servlet>
          <!--配置servlet的注册名称,起个别名-->
          <servlet-name>TestServlet</servlet-name>
          <!-- 配置servlet的完整类路径 -->
          <servlet-class>cn.itcast.web.TestServlet</servlet-class>
          </servlet>
     
          <!-- 配置serlvet映射 -->
        <servlet-mapping>
           <!-- 引用上面配置好的servelt的注册名称 -->
           <servlet-name>TestServlet</servlet-name>
           <!-- 配置对外访问路径,就是地址栏中写的路径,直接映射到根路径下 -->
           <url-pattern>*.do</url-pattern>        
        </servlet-mapping>
  * 使用方式 http://localhost:808/day05/testSerlvet.do  
  
  
  * 配置二
         * 配置格式/*,此时路径任意
              <servlet>
           <!--配置servlet的注册名称,起个别名-->
           <servlet-name>TestServlet</servlet-name>
           <!-- 配置servlet的完整类路径 -->
           <servlet-class>cn.itcast.web.TestServlet</servlet-class>
           </servlet>
      
           <!-- 配置serlvet映射 -->
         <servlet-mapping>
            <!-- 引用上面配置好的servelt的注册名称 -->
            <servlet-name>TestServlet</servlet-name>
            <!-- 配置对外访问路径,就是地址栏中写的路径,直接映射到根路径下 -->
            <url-pattern>/*</url-pattern>        
         </servlet-mapping>
   * 使用方式 http://localhost:808/day05/xxxx
  
   
   * 同一servlet可以配置多个映射
       * 配置如下: 
          <!-- 配置serlvet映射 -->
         <servlet-mapping>
            <!-- 引用上面配置好的servelt的注册名称 -->
            <servlet-name>TestServlet</servlet-name>
            <url-pattern>/testSerlvet</url-pattern>   
         </servlet-mapping>
        
         <servlet-mapping>
            <servlet-name>TestServlet</servlet-name>
            <url-pattern>/xxx</url-pattern>   
         </servlet-mapping>
         
          * 使用方式 http://localhost:808/day05/xxx
                      http://localhost:808/day05/testSerlvet
          


6.  //从响应对象中获取字符输出流
    PrintWriter out=response.getWriter();getOutputStream字节流

7.* 所以在开发中如何使用servlet的init方法时, 建议重写init()不带参数的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值