11_servlet基础知识

HigginCui HigginCui     2022-08-08     419

关键词:

【概念】

Servlet通常被称为服务端小程序,是运行在服务端的程序,用于处理及相应客户端的请求。

Servlet是用java语言开发网页动态资源的技术。

 

【特点】

1.Servlet是个特殊的Java类,这个Java类必须继承HttpServlet类。

2.一个普通的java类实现了Servlet接口,也叫作Servlet程序。通常继承HttpServlet是为了创建一个基于Http协议的Servlet。

3.Servlet程序要部署到服务器(如Tomcat)运行。

 

【Servlet提供的响应客户端请求的方法】

1. doGet()      用于响应客户端的GET请求。

2. doPost()     用于响应客户端的POST请求。

3. doPut()      用于响应客户端的PUT请求。

4. doDelete()  用于响应客户端的DELETE请求

注:客户端的请求通常只有GET和POST两种,Servlet为了响应这两种请求,必须重写doGet()和doPost()方法。

 

【Servlet开发1(Servlet3.0之前)】

[ 第1步 ]

编写java类,继承HttpServlet 。重写doGet()和doPost()方法。

package com.Higgin.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public FirstServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet方法执行---");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doPost方法执行---");
    }
}

[ 第2步 ](没有使用IDE的情况下)

把Servlet的class字节码拷贝到WEB-INF/classes目录下

[ 第3步 ]

在web.xml中配置对应的servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns
="http://java.sun.com/xml/ns/javaee"
      xsi:schemaLocation
="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
      id
="WebApp_ID" version="3.0"> <display-name>HelloServlet</display-name> <servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>com.Higgin.servlet.FirstServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

【运行结果】

 

【对于web.xml中Servlet配置的注释】

1.由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把Servlet程序映射到一个URL地址上,这个工作是在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成,在servlet3.0之后,可以使用@WebServlet("....")代替。

2.<servlet>元素用于注册Servlet,它包含两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称Servlet的完整类名

3.一个<servlet-mapping>元素用于映射一个已注册的Servlet的一个对外访问的路径,它包含有两个子元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称Servlet的对外访问名称

  <!-- 配置一个Servlet -->
  <servlet>
      <!-- Servlet内部名称,自定义 -->
      <servlet-name>FirstServlet</servlet-name>
      <!-- Servlet的 类全名 -->
      <servlet-class>com.Higgin.servlet.FirstServlet</servlet-class>
  </servlet>
  <!-- Servlet的 映射配置 -->
  <servlet-mapping>
      <!-- Servlet的内部名称,一定要和上面的保持一致 -->
      <servlet-name>FirstServlet</servlet-name>
      <!-- Servlet的映射路径(访问Servlet的名称) -->
      <url-pattern>/test</url-pattern>
  </servlet-mapping>

 

【Servlet开发2:利用Servlet3.0新特性@WebServlet注释】

最大不同:直接在对应的Servlet类名(如上面的FirstServlet类)上加上注释@WebServlet("/test"),无需在web.xml中进行配置就可以实现相同的效果。

package com.Higgin.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FirstServlet
 */
@WebServlet("/test")  //servlet3.0新特性
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    public FirstServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doGet方法执行---");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doPost方法执行---");
    }

}

 

 

 【Servlet的执行过程】

前提:TomCat服务器启动,首先加载webapps中的每个web应用的web.xml配置文件。

1.在浏览器输入对应的url, http://localhost:8080/HelloServlet/test

2.截取到URL的字符串,得到需要访问的资源名称:     /test

3.在HelloServlet网站下的web.xml信息中搜索是否存在  /test匹配的  url-pattern。

4.匹配到对应的url-pattern之后,取出当前映射信息中的servlet-name的名称,然后在web.xml信息中搜索是否存在一个相同servlet-name名称的servlet配置信息。

5.找到对应的servlet配置信息之后,取出当前配置信息的servlet-class的内容,即字符串 com.Higgin.servlet.FirstServlet

6.创建FirstServlet对象,然后调用FirstServlet类中的方法。

7.Servlet就把内容返回给浏览器用户。

 

【关于http://localhost:8080/HelloServlet/test】

浏览器中输入:http://localhost:8080/HelloServlet/test

http ://             http协议(1.本地hosts文件查找域名和ip映射 2.找不到,联网到DNS服务器找有名和ip映射器 )

8080      端口 (TomCat:8080)

/HelloServlet      站点下的web应用名称

/test       资源名称,截取到/test 字符串

          1.在HelloServlet应用下的web.xml文件中查找是否存在匹配的url-pattern

          2.使用Servlet的内部名称在web.xml文件中查找是否存在相同名称的Servlet配置

          3.得到对应的servlet-class内容,字符串 com.Higgin.servlet.FirstServlet

通过反射构造HelloServlet对象,调用方法(doGet///),将内容返回输出到浏览器,看到效果。

 

【关于Servlet接口实现类HttpServlet

Servlet接口定义了两个默认实现类:HttpServlet和GenericServlet。

* HttpServlet指能够处理HTTP请求的Servlet,它在原有的Servlet接口上添加了一些与HTTP协议处理相关的方法,它比Servlet接口的功能更为强大。因此在编写Servlet时,通常应该继承这个HttpServlet类,避免直接去实现Servlet接口。

* HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如果为GET请求,则调用HttpServlet的doGet方法;如果为POST请求,则调用doPost()方法。因此,我们在编写Servlet时,通常只需要编写doGet()或doPost()方法,而不需要去复写service方法。

 

javaweb_servlet_servlet基础_servletconfig

Servlet基础——ServletConfig1.ServletConfigServletConfig封装了Servlet的相关配置信息。ServletConfig是一个接口,其具体实现是由服务器的厂商所实现。2.配置Servlet的初始化参数信息示例:<servlet> <servlet-name>Manager</servlet-name> <s 查看详情

javaweb_servlet_servlet基础_servlet概述以及helloworld

Servlet基础_Servlet概述以及helloworld1.Servlet概述(1).Servlet(ServerApplet)是JavaServlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web... 查看详情

javaweb_servlet篇_01(代码片段)

Servlet-01篇通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。文章目录Servlet-01篇一、Servlet基础概念二、Servlet的生命周期三、Servlet重要函数四、手动实现简单... 查看详情

javaweb_servlet篇_01(代码片段)

Servlet-01篇通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。文章目录Servlet-01篇一、Servlet基础概念二、Servlet的生命周期三、Servlet重要函数四、手动实现简单... 查看详情

servlet11

设置基础路径当前页面上的所有路径都自带基础路径为“前缀”,是绝对路径 查看详情

javaweb_servlet篇_01(代码片段)

Servlet-01篇通过前段时间得JavaWeb基础学习后,对于之前学习总结的,做一下简单的梳理。本篇主要梳理相关Servlet的知识点。文章目录Servlet-01篇一、Servlet基础概念二、Servlet的生命周期三、Servlet重要函数四、手动实现简单... 查看详情

暑假学习计划:day_1.jsp&servlet&tomcat环境搭建到基础的认识。

 1.了解JSP和Servlet(百度了解即可)。2.了解B/S和C/S。分别是 浏览器/服务器 和 客户端/服务器。其中B/S被称为瘦模式(主流模式)。3.了解并下载Tomcat服务器:web应用服务器,轻量级。链接:http://pan.baidu.com/s/1nvcCNVF密码... 查看详情

servlet基础(下)

10.Servlet定义初始化参数必须使用web.xml中的init-param/para-name和para-value元素;11.ServletConfig对象的getInitParameter方法可以获取Servlet定义的初始化参数.12.容器创建了应用程序上下文对象(ServletContext),用于描述Servlet运行环境的信息,使得serv... 查看详情

jsp/servlet基础语法

相关学习资料http://my.oschina.net/chape/blog/170247http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.htmlhttp://blog.csdn.net/liaoxiaohua1981/article/details/6761053http://computer.c.blog.163.co 查看详情

2019-06-11_python基础语法

Python基础语法Python语言与Perl,C和Java等语言有许多相似之处。但是,也存在一些差异。在本章中我们将来学习Python的基础语法,让你快速学会Python编程。执行以上代码,会出现如下错误提醒:$pythontest.pyFile"test.py",line5ifTrue:^Indenta... 查看详情

servlet实现訪问量的统计小案例

  今天学习了Servlet的基础知识,学习了一个统计訪问量的小案例,记录一下packagecn.selevet_01;importjava.io.IOException;importjava.io.InputStream;importjava.io.PrintWriter;importjavax.servlet.ServletContext;importjavax.servl 查看详情

servlet_2

packagecom.atguigu.servlet;importjava.io.IOException;importjavax.servlet.Servlet;importjavax.servlet.ServletConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.s 查看详情

servlet_3

packagecom.atguigu.servlet;importjava.io.IOException;importjavax.servlet.Servlet;importjavax.servlet.ServletConfig;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.s 查看详情

servlet_1

packagecom.atguigu.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.Date;importjavax.servlet.Servlet;importjavax.servlet.ServletConfig;importjavax.servlet.ServletException;i 查看详情

servlet基础知识

目录!一、什么是servlet二、Tomcat容器等级三、手工编写第一个servlet四、servlet执行流程五、servlet生命周期六、Tomcat装载servlet的三种情况七、servlet与JSP内置对象的关系八、servlet获取表单数据九、servlet路径跳转 一、什么是serv... 查看详情

01_3_创建一个servlet

01_3_创建一个Servlet1.创建一个Servletimport java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import jav 查看详情

servlet_4

packagecom.atguigu.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.RequestDispatcher;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjav 查看详情

servlet_03_部署描述符

   二、参考文档1.Servlet3.0之部署描述符2.web.xml配置详解部署描述符文件 查看详情