Java中Servlet的初识

本文深入解析Servlet的核心概念,包括其作用、servlet接口与实现方式,重点讲解了如何通过HttpServlet创建Servlet并演示了init、service和destroy方法。此外,介绍了Servlet的三种创建方法及其优劣。

1.Servlet【重点!!!】

1.1servlet的简介

servlet===>server applet

java服务器的小程序,是javaweb非常重要的环节。主要作用是完成html和java后台代码的交互(请求《====》响应)

servlet是需要运行在java服务器(Tomcat)中的,符合http协议的

servlet的核心类核心接口

    javax.servlet和javax.servlet.http
​
    javax.servlet.ServerException
​
    javax.servlet.http.HttpServlet
​
    javax.servlet.http.HttpServletRequest
​
    javax.servlet.http.HttpServletResponse
​
    javax.servlet.http.Session
​
    javax.servlet.http.Cookie

1.2servlet入门案例

 创建一个servlet

package com.javacoffee.test1;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//刚创建好这个注释是这样的 @WebServlet(name = "MyTest"),咱们需要把括号里的name= 去掉 在引号第一个加/否则会出现404
@WebServlet("/MyTest")
public class MyTest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().append("这是我第一个Servlet");
    }
}

然后运行,记着运行时候在url后加上这个类的名字
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

4.3Servlet的三种创建方式【面试会问】

1.使用servlet接口创建的【不用】

init方法【重点】

getServletConfig方法

service方法【重点】

getServletInfo方法

destroy方法

2.GenericServlet这个抽象类【不用】

GenericServlet 是实现了Servlet这个接口,重写了Servlet下面的几乎所有的方法

相比较而言,GenericServlet 比Servlet接口方法少,目的是为了让程序精简版开发

去掉父类里面没有必须要实现的方法,只保留一个核心方法即可!!!让程序减负

service方法

3.使用HttpServlet创建Servlet

HttpServlet 是继承了GenericServlet,抽象类但是没有必须要实现的抽象方法!!!

4.3.1Servlet创建的第一种写法

package com.javacoffee.test2;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/Test2")//注意别忘了加入WebServlet注解,否则无法在服务器运行
public class Test2 implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
         //使用servletConfig对象初始化咱们servlet的
        //执行了,从这个地方可以说明一个问题 Servletlet已经被实例化了
        System.out.println("init方法");
    }

    @Override
    public ServletConfig getServletConfig() {
        //获取配置信息对象的一个方法
        //这个方法没有执行,这个方法没有用!!
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        //核心方法,这个里面类似于咱们的doget方法和dopost方法
        //这个执行了
        System.out.println("service方法");
    }

    @Override
    public String getServletInfo() {
        //获取servlet详细信息的一个方法
        //没有执行,因为我用不到servlet的核心信息
        return null;
    }

    @Override
    public void destroy() {
        //在tomacat关闭的时候,进行销毁这个servlet
        System.out.println("destroy");
        //只有在关闭tomcat服务器的时候才会执行的
    }
}

​可以在控制台中看到输出这三个结果

wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

4.3.2创建Servlet的第二种方式

package com.javacoffee.test3;


import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/Test3")
public class Test3 extends GenericServlet {
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        servletResponse.setContentType("text/html;charset=utf-8");
        servletResponse.getWriter().println("<br><br>张三");
    }
}

4.3.3使用httpServlet创建servlet【以后用这个】

package com.javacoffee.test1;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
//刚创建好这个注释是这样的 @WebServlet(name = "MyTest"),咱们需要把括号里的name= 去掉 在引号第一个加/否则会出现404
@WebServlet("/MyTest")
public class MyTest extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().append("这是我的Servlet");
    }
}

你始终记住一句话,在java中儿子绝对比爹强!!!屡试不爽!!!

要不然咱们搞子类干嘛?HttpServlet 是GenericServlet的儿子, GenericServlet又是Servlet的儿子

所以咱们使用HttpServlet

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇智波波奶茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值