初步学习Servlet

Servlet学习目录


一、Servlet是什么?

servlet : server applet 服务器的小程序 , 能够被运行的程序

  • servlet运行在服务器端的java程序。
  • Servlet是一个接口,一个类要想通过浏览器被访问到,那么这个类就必须直接或间接的实现Servlet接口

作用

接收请求,处理请求,生成响应

对比普通的类和servlet

  • servlet必须运行在web服务器上,普通的类可以在任何项目中
  • servlet做的事情是(接收请求,处理请求,生成响应);普通的类做的事情是我们自定义的
  • servlet的对象是web服务器创建的;普通的类的对象目前都是我们自己创建的.
    示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、使用步骤

① 编写步骤

  1. 创建一个 WEB 项目。
  2. 创建一个类实现Servlet接口。
  3. 重写 service 方法。
  4. 在 web.xml 中配置 Servlet。
  5. 部署并启动项目。
  6. 通过浏览器测试

② 代码编写

web.xml中HelloServlet的配置

<?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_3_1.xsd"
         version="3.1">
    <!--告诉web服务器我是一个servlet,我叫什么-->
    <servlet>
        <!--自定义,项目中必须唯一-->
        <servlet-name>A_HelloServlet</servlet-name>
        <servlet-class>com.itheima.web.servlet.A_HelloServlet</servlet-class>
    </servlet>

    <!--告诉web服务器我能干啥,能处理那个路径的请求-->
    <servlet-mapping>
        <!--复制前面起好的名字-->
        <servlet-name>A_HelloServlet</servlet-name>
        <!--目前及以后大家都用/开头-->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

servlet代码

public class A_HelloServlet implements Servlet{
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("我收到了请求");
    }

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }



    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


## 1.3 Servlet相关API
  1. 第一次访问时创建
    优势:减少对服务器内存的浪费。提高了服务器启动的效率。
    弊端:如果有一些要在应用加载时就做的初始化操作,无法完成。
  2. 服务器加载时创建
    优势:提前创建好对象,提高了首次执行的效率。可以完成一些应用加载时要做的初始化操作。
    弊端:对服务器内存占用较多,影响了服务器启动的效率。

(三) 生命周期

  • 生命周期:指的是一个对象从生(创建)到死(销毁)的一个过程
public void init(ServletConfig servletConfig);初始化
public void service(ServletRequest servletRequest, ServletResponse servletResponse);服务
public void destroy();正常销毁

面试题:

servlet其实是一个单例对象. 单例: 对象只能被初始化一次 单实例多线程

servlet是单实例的线程不安全的对象.(不要给它声明成员变量)
默认第一次请求来的时候,web服务器(servlet容器)会创建servlet的对象,执行servlet的init方法,实现初始化操作,然后执行servlet的service方法来处理当次请求.
再有请求来的时候,tomcat会获取一个线程,在当前线程中,会调用servlet的service方法来处理请求
当servlet被移除的时候或者web服务器关闭的时候,执行servlet的destory方法来显示销毁操作

① 创建servlet的三种方式

  1. 第一种
    实现 Servlet 接口,实现所有的抽象方法。该方式支持最大程度的自定义。
  2. 第二种
    继承 GenericServlet 抽象类,必须重写 service 方法,其他方法可选择重写。
    该方式让我们开发 Servlet 变得简单。但是这种方式和 HTTP 协议无关。
  3. 第三种
    继承 HttpServlet 抽象类, 不需要重写任何方法 不报错,需要重写 doGet 和 doPost 方法。
    该方式表示请求和响应都需要和 HTTP 协议相关。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值