JavaWe开发之Servlet

本文详细介绍了Servlet的概念、功能及使用方法,包括映射配置、生命周期、ServletConfig与ServletContext的区别,以及Servlet的层次结构,深入探讨了HttpServlet类的使用。

1 什么是Servlet

Servlet是Java Web开发的基石,与平台无关的服务器组件,它是运行在Servlet容器/Web应用服务/Tomcat,负责与客户端进行通信

2 Servlet的功能

1.创建并返回基于客户请求的动态HTML页面
2.与数据库进行通信

3 如何使用Servlet

Servlet 本身是一组接口,自定义一个类,并且实现 Servlet 接口,这个类就具备了接受客户端请求以及 做出响应的功能。
在src下建立MyServlet类实现Servlet接口
在这里插入图片描述
在这里插入图片描述

package com.company.cc;

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

public class MyServlet implements Servlet {

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

    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        String id = servletRequest.getParameter("id");
        System.out.println("我是Servlet,我已经接收到了客户端发来的请求,参数是"+id);
        servletResponse.setContentType("text/html;charset=UTF-8");
        servletResponse.getWriter().write("客户端你好,我已接收到你的请求");

    }

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

    @Override
    public void destroy() {

    }
}

3.1 映射间接访问Servlet

浏览器不能直接访问 Servlet 文件,只能通过映射的方式来间接访问 Servlet,映射需要开发者手动配 置,有两种配置方式。

1.基于 XML 文件的配置方式

<?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>hello</servlet-name>
        <servlet-class>com.company.cc.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>hello</servlet-name>
        <url-pattern>/demo</url-pattern>
    </servlet-mapping>
</web-app>

2.基于注解的方式。

 
@WebServlet("/demo2")
public class HelloServlet implements Servlet {
}

在客户端进行访问
在这里插入图片描述

程序端的结果显示
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

上述两种配置方式结果完全一致,将 Demo与 MyServlet 进行映射,即在浏览器地址栏中直接访问 Demo 就可以映射到 MyServlet。

4. Servlet 的生命周期

1、当浏览器访问 Servlet 的时候,Tomcat 会查询当前 Servlet 的实例化对象是否存在,如果不存在,
则通过反射机制动态创建对象,如果存在,直接执行第 3 步。
2、调用 init 方法完成初始化操作。
3、调用 service 方法完成业务逻辑操作。
4、关闭 Tomcat 时,会调用 destory 方法,释放当前对象所占用的资源。
Servlet 的生命周期方法:无参构造函数、init、service、destroy
1、无参构造函数只调用一次,创建对象。
2、init 只调用一次,初始化对象。
3、service 调用 N 次,执行业务方法。
4、destroy 只调用一次,卸载对象。

5. ServletConfig

该接口是用来描述 Servlet 的基本信息的。

  • getServletName() 返回 Servlet 的名称,全类名(带着包名的类名)

  • getInitParameter(String key) 获取 init 参数的值(web.xml)

  • getInitParameterNames() 返回所有的 initParamter 的 name 值,一般用作遍历初始化参数

  • getServletContext() 返回 ServletContext 对象,它是 Servlet 的上下文,整个 Servlet 的管理者。 ServletConfig 和 ServletContext 的区别:

  • ServletConfig 作用于某个 Servlet 实例,每个 Servlet 都有对应的 ServletConfig,

  • ServletContext 作用 于整个 Web 应用,一个 Web 应用对应一个 ServletContext,多个 Servlet 实例对应一个 ServletContext。
    一个是局部对象,一个是全局对象。

6.Servlet的层次结构

Servlet---->GenericServlet---->HttpServlet

Http请求有很多种类型,常用的有四种:
get:读取
post:保存
put:修改
delete:删除

  • GenericServlet 实现 Servlet 接口,同时为它的子类屏蔽了不常用的方法,子类只需要重写 service 方 法即可。

  • HttpServlet 继承 GenericServlet,根据请求类型进行分发处理,GET 进入 doGET 方法,POST 进入 doPOST 方法。
    适配器模式:由父类对接口进行空参实现,这样继承的子类就可以只选择需要的方法进行重写

  • 开发者自定义的 Servlet 类只需要继承 HttpServlet 即可,重新 doGET 和 doPOST。

 
package com.southwind.servlet;
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("/test")
public class TestServlet extends HttpServlet {
@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().write("GET"); }
@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().write("POST"); }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值