Servlet技术基础知识一

13年前
理解:
1、http请求和Http响应
2、http协议
3、servlet与jsp
重点:
1、通过服务器端组件动态生成HTML页面
 浏览器得到的页面不是预先写好的,而是程序算出来的
2、Servlet和servlet容器
 Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客
 户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。
 是java写的程序,是按照sun 公司的servlet标准写的
 可以在实现了sun 公司的servlet标准的容器里面运行
 servlet可以在容器的支持下,处理http请求和响应,动态生成html页面
 
 Servlet 的生命周期
  Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。
  (1) 初始化
  在下列时刻装入 Servlet:
  如果已配置自动装入选项,则在启动服务器时自动装入
    在服务器启动后,客户机首次向 Servlet 发出请求时
  重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。
 在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象。
  (2) 请求处理
  对于到达服务器的客户机请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。服务器调用
  Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。service() 方法从“请求”对象获得请
  求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求
  ,例如 doGet()、doPost() 或其它的方法。
  (3) 终止
  当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。
 
3、web项目及其基本结构(这是sun公司标准规定的,tomcat,weblogic,websphere肯定也一样的结构)
app-name<dir>
 静态文本
 首先要新建一个文本夹dangdang
  再建一个文件夹WEB-INF
    web.xml用来作配置文件,用来告诉tomcat有哪些servlet等文件。部署描述符
    classes文件夹(写得类文件要放在这里)
    lib文件夹(jvm虚拟机没有的jar包要放在这里,比如ojdbc访问oracle的驱动)
4、什么工具都不使得情况下,写一个servlet

 javac -d . HeyServlet.java
  package cn.e2leaning.
  import javax.servlet.Servlet; //Servlet不在Jdk中,可以使用tomcat目录下的common下的lib
  public class HeyServlet implements Servlet{
   //实现其方法
  }
  
  或者
  import javax.servlet.Http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  public class HeyServlet extends HttpServlet{
   //HttpServlet已经实现了Servlet的相应方法
   public void Service(HttpServletRequest request,HttpServletResponse response){
    //其中request为请求;response为响应
    //重写httpservlet的service方法;
    System.out.println("hey!!!");//显示在console上,并不显示在页面上
   
   }
  }
  
  
  

  import javax.servlet.Http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  public class HeyServlet extends HttpServlet{
   public HeyServlet(){
    System.out.println("HeyServlet!");//只在加载的时候创建下对象
   }
  
   //HttpServlet已经实现了Servlet的相应方法
   public void Service(HttpServletRequest request,HttpServletResponse response){
    //其中request为请求;response为响应
    //重写httpservlet的service方法;
    System.out.println("hey!!!");//显示在console上,并不显示在页面上
   
   }
  }
  
  
 HeyServlet是怎么运行的?
  在代码里面没有new Service,那么是怎么做的呢?什么时候调用的service方法呢?
  是tomcat在收到请求的时候,通过调用下service方法(固定的方法),来创建一个对象。
  《配合servlet的生命周期来理解》 
  
 
 javac -d . -classpath servlet-api.jar  HeyServlet.java //意思是告诉javac使用classpath指定的api来编译
  servlet-api.jar是sun公司提供的,tomcat放到了其lib目录下
 
 写一下web.xml,告诉tomcat在哪里有servlet等,这些servlet在运行的时候有哪些功能特性
  <!--省略web.xml的标准的文件头-->
     <servlet>
        <servlet-name>one</servlet-name>
        <servlet-class>这里写哪个类</servlet-class> 
     </servlet>
  注意多个servlet,name和class名字不能一样
     <servlet-mapping>
         <servlet-name>one</servlet-name>
         <url-pattern>/hello</url-pattern>
     </servlet-mapping>
  把上面写的servlet与一个地址进行绑定

 http://localhost:8080/目录/hello