Servlet概述

Servlet是Java Web的三大组件之一。
实现servlet的方法有三种:分别是继承接口javax.servlet.Servlet,实现接口中的五个方法;继承javax.servlet.GenericServlet;;继承javax.servlet.http.HttpServlet;注意的是:servlet中的方法大多数不是由我们来调用的,而是由Tomcat调用的。并且servlet中的方法大都不是由我们创建的,而是由Tomcat创建的;

我的理解是:当启动Web服务器之后,Tomcat会根据web.xml文件来创建对象
destroy方法:servlet是单例的,一个类对应一个servlet 当类对象销毁之前或者服务器关闭之前,调用相应的destroy方法
init方法:类对象创建之后,用于初始化; servletConfig指的是servlet的配置文件,如servlet-name、init-param等
service方法:这个是主要的用于实现服务或者功能的方法; ServletRequest指用户向服务器发送的请求头信息,ServletResponse指服务器向用户相应的信息。这些信息都包含在相应的request和response中

ServletConfig是一个接口,主要提供了
这里写图片描述
这个接口顾名思义就是做跟servlet相关的操作的。我们知道在web.xml中servlet的配置如下

<servlet>
<servlet-name>Aservelt</servlet-name>
<servlet-class>com.wojiushiwo.Aservelt</servlet-class>
<init-param>
<param-name>a</param-name>
<param-value>A</param-value>
</init-param>
<load-on-startup>1 </load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Aservlet</servlet-name>
<url-pattern>/Aservlet</url-pattern>
</servlet-mapping>

很明显,根据方法名可以知道getInitParameter和getInitParameterNames这两个方法是获取init-param参数中的内容的。而getServletName这个方法,根据其方法的描述得到的是这个servlet的名字,即servlet-name中的内容。load-on-startup的含义是:标记服务器是否在启动的时候就加载该servlet。当值为0或者大于0的值时,表示服务器在启动时就加载该servlet。当值为负数的时候,表示在使用到该servlet的时候才加载。正数的值越小,启动的优先级越高。

需要注意的是,这个load-on-startup没有默认值,不写表示当使用该servlet时才会被加载

getServletContext()这个方法获取的是ServletContext,这可是个大东西啊!号称是servlet中最大的接口。

ServletContext对象的创建是在服务器启动时完成的。servletContext对象的销毁是在服务器关闭时完成的。

ServletContext对象的作用是在整个web应用的动态资源之间共享数据。

获取ServletContext对象的方法
在Servlet中获取ServletContext对象:
①在void init(ServletConfig config)中:ServletContext context=config.getServletContext();
②在GenericServlet或者HttpServlet中获取ServletContext对象的方法:(因为GenericServlet和HttpServlet之间存在着继承关系,所以本质上获取的方式是一样的),直接使用this.getServletContext();
ServletContext:这是个接口,它定义了一系列的方法,用来使servlet与servlet容器进行交流。并且这个对象只有一个。它提供了一系列的方法:
这里写图片描述
这里写图片描述
ServletContext可以掌控整个web项目的资源。因此它提供了一些可以访问文件资源的方法。
对于ServletContext获取初始化参数的方式:
首先:web.xml中配置的是context-param 这是属于整个项目的。
ServletContext同时还用于整体性宏观性的进行数据的交流(如保存数据,如在这个servlet中保存数据,在那个servlet中使用数据,删除数据等)
另外ServletContext也提供了一些读写的操作流

案例:统计网站的访问人数

思路:对于全局调用某个变量,则需要使用ServletContext这个对象。首先,当获取的ServletContext对象为NULL时,说明此时之前还没创建该对象。(因为该对象,一个项目只有一个,而且随着项目的产生而产生),那么也就是说该网站还没有被访问,那么这次访问就是第一次,因此将变量赋值为1;否则的话,该对象已经创建,访问人数在原来的基础上+1。最后,将这个变量进行保存即可!

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值