一、servlet的API

Servlet接口对Servlet进行了规范,定义了方法的主要范围。

1、public void init(ServletConfig servletConfig) (初始化)Servlet第一次进入内存时被调用

参数的作用:

(1)调用ServletConfig对象的方法,获取Servlet的名称:

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>MyServletname</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
</web-app>
  public void init(ServletConfig servletConfig) throws ServletException {
String servletName=servletConfig.getServletName();
System.out.println(servletName);
}

运行结果:

(2)获得配置文件中的初始化参数:

    <servlet>
<servlet-name>MyServletname</servlet-name>
<servlet-class>MyServlet</servlet-class>
<init-param>
<param-name>zhai</param-name>
<param-value>I love study</param-value>
</init-param>
</servlet>
  public void init(ServletConfig servletConfig) throws ServletException {
String paramvalue =servletConfig.getInitParameter("zhai");
System.out.println(paramvalue);
}

(3)此方法只有在servlet对象创建时执行(刷新浏览器)

2、public void service(ServletRequest servletRequest, ServletResponse servletResponse)方法:

ServletRequest :代表请求信息。

ServletResponse :代表响应信息。

每次都会创建servletRequest和servletResponse对象。

3、public void destroy()方法:

servlet对象销毁时执行。

4、servlet的生命周期:

(1)初始化函数只有在首次访时才被执行

(2)service函数在每次被访问时都会被执行

(3) dastory函数在对象被销毁时(关闭服务器)执行

二、servlet的配置

1、基本配置

(1)类的配置:

   <servlet>
<servlet-name>MyServletname</servlet-name>//名字可以任意,但是必须与<servlet-mapping>中的保持一致。
<servlet-class>MyServlet</servlet-class>//全路径,包名加类名
</servlet>

2、访问方式

(1)完全匹配:

    <servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>

访问的路径必须与<url-patteren>里面的虚拟路径名完全相同。

(2)目录匹配:/虚拟路径/*

    <servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>/abc/123/*</url-pattern>
</servlet-mapping>

/abc/123

/abc/123/456

/abc

即:虚拟路径后面的内容可以任意。

3、扩展名匹配:*.扩展名

    <servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>

4、配置文件的作用:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>MyServletname</servlet-name>
<servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
</web-app>

如果没有配置文件,浏览器访问服务器,就要用http://localhost:8080/包名+类名,这样的方式将类和包的信息外漏很不安全,通过添加配置文件的方式,实现了对访问的类的隐藏。

在访问MyServlet类的时候,通过虚拟路径abc找到配置文件中的abc,再用MyServletname找到要访问的类(包名+类名)。

5、<load-on-startup>的使用

如果不加<load-on-startup>标签,Servlet的初始化方法是在浏览器访问的时候才执行,但是加了标签之后,在服务器启动的时候该方法即被执行。

<servlet>
<servlet-name>MyServletname</servlet-name>
<servlet-class>MyServlet</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>

6、全局配置与局部配置

(1)当配置文件如下时:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>MyServletname</servlet-name>
<servlet-class>MyServlet</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
</web-app>

目录结构(有html页面和jsp页面):

执行后:

执行的时HTML页面,但是为什么没有执行JSP呢?

这是因为在自己配置的WEB.XML文件中,没有对页面的优先级进行定义,只能调用默认的全局web.xml文件。文件配置如下图:

(2)自定义访问优先级:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>MyServletname</servlet-name>
<servlet-class>MyServlet</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServletname</servlet-name>
<url-pattern>/abc</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>

可以看出,如果已经自定义了文件的优先级,则按照自定义的文件的优先级。

7、生命周期

Servlet的生命周期始于它被装入Web容器的内存时,并在Web容器终止或重新装入Servlet时结束。
Servlet一旦被装入Web容器,一般不会从Web容器内存中删除,直至Web容器关闭或者重新启动结束。
一般来说第一次访问Servlet程序时所用的时间开销要大大多于以后访问所用的时间。

Servlet接口的实现的更多相关文章

  1. Servlet接口五种方法介绍

    Servlet接口定义了5种方法: init() service() destroy() getServletConfig() getServletInfo() init() 在Servlet实例化后 ...

  2. Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)

    本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...

  3. java Servlet接口及应用

    基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...

  4. Servlet课程0424(一) 通过实现Servlet接口来开发Servlet

    //这是我的第一个Servlet,使用实现Servlet接口的方式来开发 package com.tsinghua; import javax.servlet.*; import java.io.*; ...

  5. myeclipse实现Servlet实例(1) 通过继承servlet接口实现

    1.在myeclipse新建web project,配置Tomcat(在myeclipse的Window--preferences) 2.然后在src新建servlet文件( 此处放在com.tsin ...

  6. servlet三种实现方式之一实现servlet接口

    servlet有三种实现方式: 1.实现servlet接口 2.继承GenericServlet 3.通过继承HttpServlet开发servlet 第一种示例代码如下(已去掉包名): import ...

  7. java Servlet接口及应用(转)

    基本类和接口 一.javax.servlet.Servlet接口 servlet抽象集是javax.servlet.Servlet接口,它规定了必须由Servlet类实现由servlet引擎识别和管理 ...

  8. 解决Ajax请求后台Servlet接口拿不到JSON数据问题

    前端Ajax请求代码如下: window.onload=function() { var url='http://127.0.0.1:8080/testpj/ErrorlogServlet'; $.a ...

  9. Servlet接口、GenericServlet类、HttpServlet类

    Servlet是最顶层的接口,其提供的方法有: init(ServletConfig config):void // 初始化 getServletConfig():ServletConfig // 取 ...

  10. java EE :Servlet 接口

    Servlet 生命周期  : 调用当前 Servlet 类构造函数进行实例化 Servlet 通过调用 init () 方法进行初始化 Servlet 调用 service() 方法来处理客户端的请 ...

随机推荐

  1. 信安周报-第02周:SQL基础

    信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...

  2. Python-PostgreSQL的使用

    一.安装PostgreSQL模块 yum install postgresql-devel pip3 install psycopg2 注意:安装时遇到./psycopg/psycopg.h:35:2 ...

  3. SpringBoot整合Dubbo配合ZooKeeper注册中心

    安装ZooKeeper 我这里使用zookeeper作为服务注册中心,版本3.4.9,下载地址: http://mirrors.hust.edu.cn/apache/zookeeper/zookeep ...

  4. tomcat启动nio,apr详解以及配置

    tomcat启动nio,apr详解以及配置 前言 在正文开始之前,我们先在idea工具中看看启动的信息,顺便看下启动的基本信息 在这里插入图片描述可以看到信息有tomcat版本操作系统版本java版本 ...

  5. Leetcode之回溯法专题-17. 电话号码的字母组合(Letter Combinations of a Phone Number)

    [Leetcode]17. 电话号码的字母组合(Letter Combinations of a Phone Number) 题目描述: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组 ...

  6. 《GO Home Trash!》UML类图,ER图以及数据库设计

    <Go Home Trash!>UML类图 ER图以及数据库中数据表 分析: 这款软件经过我们前期的讨论以及需求分析,确定了用户,客服以及管理员三个实体.在设计UML类图时,对各个实体之间 ...

  7. js的真值与假值

    假值 结果为 false 的值称为 假值.例如,空字符串 "" 为假值,因为在布尔表达式中,"" 等于 false. false == 0返回:true fal ...

  8. Lambada和linq查询数据库的比较

    1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname,ssex,class from studentLinq:    from s in Student ...

  9. docker运行原理与使用总结

    docker运行原理概述 Client-Server架构 docker守护进程运行在宿主机上systemctl start docker daemon进程通过socket从客户端(docker命令)接 ...

  10. ssh延迟加载问题的解决方案

    1. 什么是延迟加载问题 ? 业务层查询的数据 关闭session 之后...web层获取延迟加载的数据失败. 例如:查询订单没有查询客户,需要显示客户,session已经关闭,无法查询 2. 如何解 ...