网站开发--详解Servlet(上)

简介: 网站开发--详解Servlet

💕"Echo"💕

作者:Mylvzi

文章主要内容:网站开发–详解Servlet

一.基本介绍

tomcat是Java中开发服务器的重要的一个工具,任何开发的服务器都要部署在tomcat之上,可以说tomcat是所有服务器的底座,为了更好的操作http,tomcat对原生的api进行了封装,封装为Servlet*,通过servlet就可以非常方便的完成和http协议的祥光操作

关于Servlet的学习,主要学习以下三个类即可:

  1. HttpServlet
  2. HttpRequestServlet
  3. HttpResponseServlet

掌握好这三个类,就能很好的使用Servlet

二.HttpServlet

HttpServlet是Servlet中最核心的一个类,我们创建的用于进行交互的类都必须要继承于HttpServlet

HttpServlet中常用方法

  1. init()方法会在一个Servlet对象被创建好之后,自动的调用这个方法,完成初始化操作
  2. destroy()方法会在Servlet对象被销毁之前进行调用,完成一些释放资源的工作
  3. service()方法实际上并不会直接使用到,而是被doGet(),doPost()给替代

init(),destroy(),service()这三个方法在实际的开发中很少用到,都是tomcat自动的在合适的时机帮助我们调用的,这三个方法经常会出现到一个经典的面试题中:

经典面试题:Servlet的生命周期

Servlet的生命周期是指Servlet实例被创建出来到被销毁的过程,具体来说可以分为以下几点:

  1. Servlet实例的创建:当客户端发送请求,服务器就要创建出一个Servlet实例来处理请求,通过构造方法创建出一个Servlet实例
  2. 初始化:在实例被创建好之后,会自动调用init()方法,来完成一些初始化操作,比如:读取配置文件,数据库的连接,一些资源的初始化
  3. 处理请求:当有客户端的http请求发送到服务器时,Servlet会先调用service()方法,判断请求的具体类型(根据请求的方法),service()方法就像是火车的中转站一样,看你的目的是什么,再给你对应的路线.这里也是一样,如果请求是GET方法,就会交给代码中的doGet()方法处理,如果是POST请求,就会交给doPost()方法
  4. 实例的销毁:当我们不再使用Servlet实例时(客户端不再有请求发送过来/人为关闭),先调用destroy()方法,做一些清理工作,比如数据库的断开,资源释放等

这个过程类似于生命周期中的起始、成长、运行和结束阶段,每个阶段都有其特定的任务和目的。

总的来说,我们所写的代码都要继承于HttpServlet这个类,重写里面的方法,并将重写的方法插入到tomcat已有的框架之中,我们只需关注数据处理部分,其余操作都是tomcat自动帮助我们完成

二.HttpServletRequest

1.介绍

HttpServletRequest表示一个Http请求类,用于接受从客户端传输过来的http请求

HttpServletRequest中的很多属性和请求头的相关属性相同,理解好请求头中的相关属性有助于学习HttpServletRequest类

一个Http请求由四部分组成:

  1. 首行 = 方法 + URL + 版本号
  2. 请求头:由键值对组成
  3. 空行
  4. body

2.HttpServletRequest常用方法介绍

1.获取首行信息和header中的数据**

@WebServlet("/request1")
public class RequestParameter extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 尝试获取请求报文中的详细信息
        StringBuffer stringBuffer = new StringBuffer();// 这个是线程安全的
        // 1.获取首行信息
        stringBuffer.append(req.getMethod());
        stringBuffer.append("<br>");// <br>是html中的换行标签
        stringBuffer.append(req.getRequestURI());
        stringBuffer.append("<br>");
        stringBuffer.append(req.getProtocol());
        stringBuffer.append("<br>");
        
        // 2.获取请求头信息
        Enumeration<String> enumeration = req.getHeaderNames();
        while (enumeration.hasMoreElements()){// 利用迭代器访问每一个头部key
            String key = enumeration.nextElement();
            String val = req.getHeader(key);// 获取key的值
            stringBuffer.append(key + ":" + val + "<br>");
        }
        resp.getWriter().write(stringBuffer.toString());
    }
}

获取结果:

总结:

对于请求报文来说,获取首行中的信息(版本号/方法/URL),可以直接通过指定的get方法来获取,获取请求头(header)中内容,可以利用迭代器,将请求头中的所有键值对都存储到一个集合之中,再利用getHeader方法,指定参数,来获取对应的value值

网站开发--详解Servlet(下)https://developer.aliyun.com/article/1480772?spm=a2c6h.13148508.setting.21.361f4f0eyTL4lb


目录
相关文章
|
1月前
|
JSON 前端开发 Java
网站开发--详解Servlet(下)
网站开发--详解Servlet
22 0
|
1月前
|
Java
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
人事管理系统【JSP+Servlet+JavaBean】(Java课设)
21 0
|
2月前
使用Servlet上传多张图片——前台页面层(Index.jsp)
使用Servlet上传多张图片——前台页面层(Index.jsp)
14 0
|
1天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
13 5
|
1天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
9 1
|
1天前
|
Java
校园帮【JSP+Servlet+JavaBean】(Java课设)
校园帮【JSP+Servlet+JavaBean】(Java课设)
6 1
|
1天前
|
Java
新闻发布系统【JSP+Servlet+JavaBean】(Java课设)
新闻发布系统【JSP+Servlet+JavaBean】(Java课设)
8 2
|
1天前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
13 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
1天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
7 2
|
1天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
11 2