Servlet介绍

Servlet介绍

  Servlet是一个Web容器,我们通常用的Servlet是httpservlet,而httpservlet则又继承了genericServlet,而generiservlet又实现了Servlet接口;

  Servlet工作原理

      客户端发送请求至服务器,服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并转发给服务器,服务器将响应返回给客户端;

      Servlet容器将Servlet类载入内存,并产生Servlet实例和调用它的具体方法,用户发起请求,Servlet容器调用service()方法,同时传入ServletRequest和ServletResponse对象,ServletRequest对象里封装了当前http请求,我们也不需要进行解析,ServletResponse表示当前用户的http请求响应,然后我们在返回给用户即可;

      在一个应用程序中,每种Servlet类型只能有一个实例,对于每一个应用程序,Servlet容器都会创建一个ServletContext对象。封装了上下文的环境详情。每个应用程序只有一个ServletContext,一个Servlet对应一个上下文;

  Servlet声明周期是:先进行实例化,然后是初始化,提供服务,在销毁,最后不可用,在这五个生命周期中,初始化调用的是init方法,这个方法只有一个,而提供服务则调用的是service方法,在我们的service层中,继承了httpServlet,其实就是对应了doGet(),doPost()方法,Servlet是单例的,非线程安全,所以说一般有一下几种解决方案:

  1. 继承SingleThreadModel,但是这样每次都会创建一个新的Servlet实例,比较消耗服务器内存,降低性能;
  2. 尽量避免使用全局变量,Servlet是一个单例多线程,使用全局变量会使浏览器访问时出现混乱;
  3. 通过使用ThreadLocal,内部是一个Map结构,用当前线程作为key,它会创建多个get,set 方法;
  4. 可以加锁用来解决线程问题;

    

servlet的配置文件  web.xml

<servlet>

<servlet-name>ImageCodeServlet</servlet-name> <servlet-class>org.leopard.code.ImageCodeServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ImageCodeServlet</servlet-name>

<url-pattern>/d</url-pattern>

</servlet-mapping>

描述

    在web.xml中,先写一个Servlet标签,Servlet标签中有两个子标签,一个叫Servlet-name,这个name可以随便起,但是要保证唯一性,另外一个就是Servlet-class,这个Servlet-class对应的就是后天提供服务的Servlet,除此之外还有一个Servlet-mapping,有子标签Servlet-name,要保证和上面的Servlet-name一致,还有一个子标签url-pattern,这是一个虚拟路径,用来发送请求地址的URL;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值