一、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. 解决Springboot整合ActiveMQ发送和接收topic消息的问题

    环境搭建 1.创建maven项目(jar) 2.pom.xml添加依赖 <parent> <groupId>org.springframework.boot</group ...

  2. 100天搞定机器学习|day43 几张GIF理解K-均值聚类原理

    前文推荐 如何正确使用「K均值聚类」? KMeans算法是典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大.该算法认为簇是由距离靠近的对象组成的,因此把 ...

  3. Nginx 502 Bad Gateway 错误的解决方法

    502 bad gateway 的解决方法 通用配置 proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; # ...

  4. python小白手册之字符串的私有方法和公用方法

    #字符串方法. name=input('1111') if name.isalnum(): print(是否由数字字母) isdigit isdecimal判断数字 strip去空格或者其他 name ...

  5. Python模块之requests,urllib和re

    目录 一.爬虫的步骤 二.使用Jupyter 三.爬虫请求模块之urllib 四.爬虫请求模块之requests 五.爬虫分析之re模块 一.爬虫的步骤 1.发起请求,模拟浏览器发送一个http请求 ...

  6. 深入浅出TCP与UDP协议

    深入浅出TCP与UDP协议 网络协议是每个前端工程师的必修课,TCP/IP协议族是一系列网络协议的总和,而其中两个具有代表性的传输层协议,分别是TCP与UDP,本文将介绍这两者以及他们之间的区别. 一 ...

  7. C#/Java 动态生成电子发票

    电子发票是电商时代的产物,PDF发票是最常见的电子发票之一.在这篇文章中,我将给大家分享一个免费的动态生成PDF电子发票的C#方案,并在文章末尾附上Java解决方案. 典型的发票包含客户和供应商的名称 ...

  8. 构建docker虚拟化平台

    安装epel-release扩展包 yum install epel-release -y 安装docker yum install docker-ce 启动docker systemctl star ...

  9. Spring源码剖析开篇:什么是Spring?

    在讲源码之前,先让我们回顾一下一下Spring的基本概念,当然,在看源码之前你需要使用过spring或者spirngmvc. Spring是什么 Spring是一个开源的轻量级Java SE(Java ...

  10. SpringMVC源码分析3:DispatcherServlet的初始化与请求转发

    在我们第一次学Servlet编程,学java web的时候,还没有那么多框架.我们开发一个简单的功能要做的事情很简单,就是继承HttpServlet,根据需要重写一下doGet,doPost方法,跳转 ...