Servlet(理解)

目录

Servlet入门:

Servlet关系视图 :

 Servlet映射方式:

Servlet创建时机:

默认Servlet

 ServletConfig

ServletConfig 配置方式

ServletConfig 常用方法

ServletContext 介绍

域对象

ServletContext 配置方式

ServletContext 常用方法

注解开发Servlet

抖一抖


Servlet是运行在Java服务器端的程序,用于接收和相应来自客户端基于HTTP协议的请求。

如果想要实现Servlet功能,可以通过实现javax.servlet.Servlet接口或者继承它的实现类。

Servlet是单例模式,也就是整个应用中只有一个实例对象,虽然是单线程,但是也存在线程不安全,解决办法:不要定义成员变量,而是要定义局部变量,或者加上synchronized(this){代码}

核心方法:service(),任何客户端的请求都会经过该方法。

 小tips:如果读者是web项目,那么可以在WEB-INF文件夹下的web.xml文件里加入如下配置来更改默认访问的主页
 

//修改访问tomcat默认主页
<welcome-file-list>
        <welcome-file>自己的访问主页路径</welecome-file>
</welcome-file-list>

Servlet入门:

servlet是一个接口,运行在web服务器中的小程序,实现servlet功能有三种方式:

1.实现servlet接口        2.继承GenericServlet        3.继承HttpServlet

tip1.servlet初始化时都会执行init方法;

tip2.所有客户端请求都会经过service()方法;

tip3.当servlet从服务器中移除的时候会调用destroy()方法,最后由垃圾回收器进行回收。

Servlet关系视图 :

 Servlet映射方式:

No.1 具体名称的的方式

No.2 /开头+通配符*的方式,只要符合目录结构,不用考虑结尾是什么

No.3 通配符*+固定格式结尾的方式。只要符合固定结尾的格式即可,不用考虑前面的路径

优先级问题:越是具体的优先级越高,No.1 > No.2 > No.3

Servlet创建时机:

1. 第一次访问时创建

  • 优势:减少对服务器内存的浪费,提高了服务器启动的效率
  • 弊端:如果有一些要在应用加载时就做的初始化操作,无法完成

2. 服务器加载时创建

  • 优势:提前创建好对象,提高了首次执行的效率,可以完成一些应用加载时要做的初始化操作
  • 弊端:对服务器内存占用较多,影响了服务器启动的效率

实现方法:

在<servlet>标签中,添加<load-on-startup>标签。

<servlet>
    <servlet-name>servletDemo</servlet-name>
    <servlet-class>com.kolacc.demo.demo01</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>servletDemo</servlet-name>
    <url-pattern>/demo</url-pattern>
</servlet-mapping>
  • 正整数代表服务器加载时创建,值越小,优先级越高。负整数或不写代表第一次访问时创建。

默认Servlet

  • 默认servlet是有服务器提供的一个servlet。它配置在Tomcat的conf目录中的web.xml中。
  • 它的映射路径是<url-pattern>/</url-pattern>,我们在发送请求时,首先会在我们项目中的web.xml中查找映射配置,找到则执行。但当找不到对应的Servlet路径时,就去找默认的Servlet处理,所以,一切都是Servlet。
   <!-- The mapping for the default servlet -->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

 ServletConfig

  • ServletConfig是Servlet的配置参数对象,在Servlet的规范中,允许为每一个Servlet都提供一些初始化的配置。所以,每个Servlet都有一个自己的ServletConfig。
  • 作用:在Servlet的初始化时,把一些配置信息传递给Servlet。
  • 生命周期:和Servlet相同。

ServletConfig 配置方式

  • 在<servlet>标签中,通过<init-param>标签来配置,有两个子标签。
  • <param-name>:代表初始化的key。
  • <param-value>:代表初始化的value。

通过init方法对ServletConfig对象赋值

ServletConfig 常用方法

  • getInitParameter(String name)        根据参数名称获取参数的值        返回值String类型
  • getInitParameterNames()                获取所有参数名称的枚举           返回Enumeration类型
  • getServletName()                            获取Servlet名称                          返回String类型
  • getServletContext()                         获取ServletContext对象              返回ServletContext 

ServletContext 介绍

  • ServletContext是应用上下文对象(应用域对象)。每一个应用中只有一个ServletContext对象
  • 作用:可以配置和获取应用的全局初始化参数,可以实现Servlet之间的数据共享。
  • 生命周期:应用一加载则创建,应用被停止则销毁

域对象

  • 域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象,共享数据的能力也不一样。
  • 在Servlet规范中,一共有4个域对象。ServletContext就是其中的一个。它也是web应用中最大的作用域,也叫application域。它可以实现整个应用之间的数据共享!

ServletContext 配置方式

  • 在<web-app>标签中,通过<context-param>标签来配置。有两个子标签。
  • <param-name>:代表全局初始化参数的key。
  • <param-value>:代表全局初始化参数的value。

ServletContext 常用方法

  • getInitParameter(String name)        根据名称获取全局配置的参数        返回值为String类型
  • getContextPath()                             获取当前应用的访问虚拟目录         返回值为String类型
  • getRealPath(String path)  根据虚拟目录获取应用部署的磁盘绝对路径      返回值为String类型
  • setAttribute(String name,Object value)    向应用域对象中存储数据           没有返回值
  • getAttribute(String name)                通过名称获取应用域对象中的数据     返回值为Object类型
  • removeAttribute(String name)         通过名称移除应用域对象中的数据      没有返回值

注解开发Servlet

配置文件开发servlet是基于servlet2.5,servlet3.0之后就可以使用注解来进行开发servlet,同时也可以使用注解方式开发,因为向下保留

直接使用@WebServlet("/访问路径")

抖一抖

definition        n.定义;阐述;清晰度

BeanDefinition       

一个接口,包含了一些bean的基本信息(名称,所属类名称,是否单例,作用域等等)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值