servlet简介

 

Servlet是由sun公司提供的一项用于开发动态web资源的技术(例如在购物网站上每个人的购物车里面的东西是不一样的,这就是动态的web资源)而动态的web资源需要程序来生成,这些程序不能独立运行,需要一个运行的环境,这个环境称为web容器。web容器中运行的程序如果是Servlet,那么该web容器也可以称为Servlet容器

开发Servlet步骤

1.写一个类实现javax.servlet接口

但是我们发现这个接口中的许多方法我们用不到,如果想通过实现Servlet这个接口来编写一个Servlet的话会很麻烦,我们的前辈怎么会想不到这个问题呢?于是我仔细观察了api,发现了一个名叫GenericServlet的类,它实现了Servlet中的大多数方法,唯独service方法没有实现-->这不正是我想要的吗?我们可以直接继承这个类,然后直接重写其中的service方法不就行了?向客户端写出程序的代码如下

package com.servlet;
public class FirstServlet extends GenericServlet{
    public void service(ServletRequest 

req,ServletResponse res)

throwsServletException,java.io.IOException{
       Date date = new Date();
       res.getWriter().write(date.toLocaleString());  
    }
}

如果你是用记事本编写的这段代码,那么它直接在命令行窗口编译的话会报错,因为我们开发的是javaee项目,需要将javaee相
关的开发包加入classpath环境变量,这个包在Tomcat的支持包中存有,将其加入classpath环境变量即可,找到你自己的Tomcat的安装路径,以我的为例,在命令行键入以下代码

set classpath=%classpath%;E:\workspace\tomcat7\lib\servlet-api.jar

再次编译(报出toLocaleString方法已经过时的话忽略)编译成功之后将class文件拷入web应用的WEB-INF/classes目录下即可

2.配置Servlet的对外访问路径

在web.xml中配置Servlet,如下代码所示

<servlet>
    <servlet-name>FirstServlet</servlet-name>
    <servlet-class>com.servlet.FirstServlet</servlet-class>
    <!-- 配置当前Servlet在web应用加载时加载并实例化 -->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>FirstServlet</servlet-name>
    <url-pattern>/servlet/FirstServlet</url-pattern>
</servlet-mapping>

其中,servlet-class中配置的是Servlet类的全路径名servlet-name是为该servlet配置的名称,此名称为了便于识别和类名相同url-pattern是为该名称的servlet配置对外的访问路径,浏览器可以通过该路径访问此servlet启动服务器,通过浏览器访问如下图所示

servlet的调用过程

1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为IP地址,如果找不到再去找dns服务器
2)浏览器根据IP地址和端口号访问服务器,组织HTTP请求信息发送给服务器
3)服务器根据请求信息中的Host请求头判断当前访问的是哪一台虚拟主机
4)服务器根据HTTP请求的请求URI判断当前访问的是哪一个web应用
5)服务器再根据URI的后一部分内容判断具体访问的是web应用中的哪一个web资源
6)检查web应用的web.xml文件,如果根据路径找到具体servlet处理类的全路径名的话就交给该servlet处理,找不到的话就交给缺省的servlet处理
7)浏览器和服务器之间的关系只是单纯的HTTP协议
8)解析请求、封装RequestResponse对象、创建servlet、调用service方法都是服务器自动进行的,开发人员只需要写好
servlet并将其配置进容器即可,不必操心底层的实现。-->这就是容器的好处!!!

servlet的生命周期

1)默认情况下,servlet第一次被访问时创建对象,并立即调用init()方法执行初始化操作
2)从此这个servlet对象会一直驻留在内存中为后续对这个servlet的请求服务
3)知道服务器关闭或者web应用移出容器时,随着web应用的销毁,servlet对象也被销毁,在销毁之前调用destroy方法执行善后工作
4)在存活期间,每次对servlet的调用都会导致service方法的执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值