JavaWeb——Servlet(入门必备,web请求与响应的底层)

2023-10-26

1、servlet介绍

1.1、什么是servlet

  • servlet是javaEE的规范之一,也就是接口
  • servlet是javaweb的三大组件之一,分别是servlet程序,Filter过滤器,Listener监听器
  • servlet是运行在服务器上的例如Tomcat上的一个java程序

1.2、手动实现servlet程序的步骤

1.2.1、编写一个类来实现servlet接口

1.2.2、实现service方法

1.2.3、在web.xml中配置servlet程序的访问地址

创建一个servlet类然后实现他的方法
在这里插入图片描述

package com.wyg.servlet;
import javax.servlet.*;
import java.io.IOException;
/**
 * @author shkstart
 * @create 2021-12-15 23:26
 */
public class HelloServlet 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 {
        System.out.println("servlet程序被访问了");
    }

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

    @Override
    public void destroy() {

    }
}

配置web.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>HelloServlet</servlet-name>
    <servlet-class>com.wyg.servlet.HelloServlet</servlet-class>
</servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

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

2、servlet的生命周期

  • servlet调用构造器方法
  • servlet调用init初始化方法
  • servlet调用service方法(里面还会执行doGET和doPOST方法)
  • servlet调用destroy销毁方法
package com.wyg.servlet;
import javax.servlet.*;
import java.io.IOException;
/**
 * @author shkstart
 * @create 2021-12-15 23:26
 */
public class HelloServlet implements Servlet {

    public HelloServlet(){
        System.out.println("1、构造器方法执行");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2、init方法执行");
    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3、servlet程序被访问了");
    }

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

    @Override
    public void destroy() {
        System.out.println("4、执行销毁方法");
    }
}

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

可以看到,在整个程序执行时,servlet程序会依次执行构造器方法,init方法,service方法,最后程序停止时会执行销毁方法,避免资源被占用。

3、get请求与post请求的分发

servlet程序

package com.wyg.servlet;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
 * @author shkstart
 * @create 2021-12-15 23:26
 */
public class HelloServlet implements Servlet {

    public HelloServlet(){
        System.out.println("1、构造器方法执行");
    }
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("2、init方法执行");
    }

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

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3、servlet程序被访问了");
        HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
        String method = httpServletRequest.getMethod();
        if("GET".equals(method)){
            doget();
        }else if("POST".equals(method)){
            dopost();
        }
    }

    public void doget(){
        System.out.println("桥本环奈执行了get方法");
    }
    public void dopost(){
        System.out.println("桥本环奈执行了post方法");
    }
    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {
        System.out.println("4、执行销毁方法");
    }
}

submit.html程序

<!DOCTYPE html>
<html lang="zh_CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="http://localhost:8088/javaweb/hello" method="post">
        <button type="submit">桥本环奈</button>
    </form>
</body>
</html>

3.1、get请求

<body>
    <form action="http://localhost:8088/javaweb/hello" method="get">
        <button type="submit">桥本环奈</button>
    </form>
</body>

在这里插入图片描述

3.2、post请求

<body>
    <form action="http://localhost:8088/javaweb/hello" method="post">
        <button type="submit">桥本环奈</button>
    </form>
</body>

在这里插入图片描述

3.3、通过继承HttpServlet类实现servlet类

package com.wyg.servlet;

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

/**
 * @author shkstart
 * @create 2021-12-16 17:03
 */
public class HelloServlet2  extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("桥本环奈执行了doget方法");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("桥本环奈执行了dopost方法");
    }
}

web.xml

 <servlet>
            <servlet-name>HelloServlet2</servlet-name>
            <servlet-class>com.wyg.servlet.HelloServlet2</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>HelloServlet2</servlet-name>
            <url-pattern>/hello2</url-pattern>
        </servlet-mapping>

在这里插入图片描述

4、ServletConfig类

4.1、三大作用

  • 获取Servlet程序的别名servlet-name的值
  • System.out.println("servlet程序的别名:"+servletConfig.getServletName());
  • 获取初始化参数init-parm
  • System.out.println("servlet程序的参数init-parm:"+servletConfig.getInitParameter("用户名")); System.out.println("servlet程序的参数init-parm:"+servletConfig.getInitParameter("密码"));
  • 获取servletContext对象
  • System.out.println("获取ServletContext对象:"+servletConfig.getServletContext());
    在这里插入图片描述

5、ServletContext类

5.1、什么是ServletContext类

  • ServletContext是一个接口,表示Servlet的上下文对象
  • 一个web工程只有一个ServletContext对象
  • ServletContext对象是一个域对象

域对象是一个可以想Map一样可以存取数据的对象

5.2、ServletContext类的四个作用

  • 获取web.xml中配置的上下文参数context-param
<!--Context-param是上下文参数(属于整个web工程)-->
    <context-param>
        <param-name>姓名</param-name>
        <param-value>迪迦</param-value>
    </context-param>
    <context-param>
        <param-name>年龄</param-name>
        <param-value>500</param-value>
    </context-param>
  • 获取当前的工程路径
System.out.println("工程路径"+context.getContextPath());
  • 获取工程部署后在服务器硬盘上的绝对路径
System.out.println("服务器硬盘上的绝对路径:"+context.getRealPath("/"));
  • 像Map一样存取数据
ServletContext context = getServletContext();
        context.setAttribute("姓名","赛罗");
        System.out.println("context获取域数据中key的值"+context.getAttribute("姓名"));

在这里插入图片描述

6、HttpServletRequest类

6.1、HttpServletRequest类的作用

通过HttpServletRequest对象获取所有被Http协议信息封装的request对象的所有请求2信息。

6.2、HttpServletRequest类的常用方法

  • getRequestURI 获取请求的资源路径
  • getRequestURL 获取请求的绝对路径
  • getRemoteHost() 获取请求的客户端ip
  • getHeader() 获取请求头
  • getParameter() 获取请求参数(一个值)
  • getParameterValues() 获取请求参数(多个值)
  • getMethod() 获取请求的方法
  • setAttribute(); 设置域数据
  • getAttribute(); 获取域数据
  • getRequestDispatcher() 获取请求转发对象

在这里插入图片描述

6.3、doget与dopost的乱码问题

在doget中,我们解决乱码的顺序是先获取请求参数,要先以iso8859-1进行编码,再以utf-8进行解码

例如:

String password = req.getParameter("password");
password=new String(password.getBytes("iso8859-1"),"UTF-8") 

在dopost中,我们可以直接设置设置请求体的字符集为UTF-8

req.setCharacterEncoding("UTF-8");

7、请求转发

7.1、什么是请求转发

什么是请求转发呢?那就不得不提到转发与重定向的区别

重定向:你先去了公安局,说你要寄东西,公安局的人说:“这个事情不归我们管,去邮局”,然后告诉了你去邮局的路,你就从公安局走了,自己乘车去了邮局。

转发:你先去了公安局,公安局看了以后,知道这个事情其实应该邮局来管,但是他没有让你走,秉持着为人民服务的精神理念,自己把东西送到邮局,帮你把事情办了。

ServletTest1

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher servletTest2 = request.getRequestDispatcher("/servletTest2");
        servletTest2.forward(request,response);
    }

ServletTest2

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("已转发到ServletTest2");
    }

web.xml

<servlet>
        <servlet-name>ServletTest1</servlet-name>
        <servlet-class>com.wyg.servlet.ServletTest1</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletTest1</servlet-name>
        <url-pattern>/servletTest1</url-pattern>
    </servlet-mapping>


    <servlet>
        <servlet-name>ServletTest2</servlet-name>
        <servlet-class>com.wyg.servlet.ServletTest2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletTest2</servlet-name>
        <url-pattern>/servletTest2</url-pattern>
    </servlet-mapping>

8、HttpServletResponse类

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于请求的request对象、和响应的response对象。
我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。既然是请求和响应,那一定会有数据的产生,那就要说到两个输出流,一个是字节流一个是字符流。

  • 字节流 getOutputStream() 用于文件下载
  • 字符流 getWriter() 用于回传字符串

注意:在一个Servlet程序中,两个流只能使用一个,使用了字节流就不能使用字符流,使用了字符流就不能使用字节流。

//获取响应内容
        PrintWriter writer = response.getWriter();
        writer.write("迪迦把怪兽打屎了 ");

web.xml

<servlet>
        <servlet-name>ServletResponse</servlet-name>
        <servlet-class>com.wyg.servlet.ServletResponse</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletResponse</servlet-name>
        <url-pattern>/servletResponse</url-pattern>
    </servlet-mapping>

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

我们服务器的字符集为ISO-8859-1,而浏览器的默认字符集为GBK,所以引起了乱码。此时我们需要设置字符集

//设置服务器字符集为utf-8
        response.setCharacterEncoding("UTF-8");
        //设置浏览器的字符集为UTF-8
        response.setHeader("Content-Type","text/html;charset-UTF-8");

在这里插入图片描述

9、请求重定向

ResponseTest1

package com.wyg.servlet;

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

/**
 * @author shkstart
 * @create 2021-12-18 22:33
 */
public class ResponseTest1 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("ResponseTest1 已废弃,马上跳转到ResponseTest2");
        resp.sendRedirect("http://localhost:8088/javaweb/responseTest2");
    }
}

ResponseTest2

package com.wyg.servlet;

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

/**
 * @author shkstart
 * @create 2021-12-18 22:39
 */
public class ResponseTest2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(" 双眼失明丝毫不影响我追捕敌人,因为我能闻到他们身上的臭味");
    }
}

web.xml

<servlet>
    <servlet-name>ResponseTest1</servlet-name>
    <servlet-class>com.wyg.servlet.ResponseTest1</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ResponseTest1</servlet-name>
    <url-pattern>/responseTest1</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>ResponseTest2</servlet-name>
    <servlet-class>com.wyg.servlet.ResponseTest2</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>ResponseTest2</servlet-name>
    <url-pattern>/responseTest2</url-pattern>
</servlet-mapping>

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb——Servlet(入门必备,web请求与响应的底层) 的相关文章

  • 如何使用 IO Codenameone 发布图片/图像

    因为 codenameone 不能使用外部库 HttpConnection 所以我必须使用 Codenameone 提供的内部库 API 只是我已经设法使用 ConnectionRequest 将数据发布到格式化文本 字符串 我想知道是否有
  • Java Arraylist of object 按日期从数组列表中删除元素

    这是我的数组列表 ArrayList
  • mvn dependency:analyze 结果不正确

    我一直在寻找一种工具 它能够向您显示未使用的依赖项 我很快就偶然发现了 Maven 命令mvn dependency analyze 这样做的问题是 它经常检测到 未使用的 依赖项 如果缺失 这些依赖项就会导致构建失败 这是优化项目的示例
  • 如何使用 log4j 自动记录类中调用的每个方法

    我有一个包含数据库调用的类 我通常希望使用 log4j 记录该类中调用的每个方法 带参数 logger debug foo id id initiated 可以自动执行此操作吗 也许通过在每个方法的开头使用某种注释而不是编写每个 logge
  • JSP重定向和传值

    我有一个 JSP 其中我重定向到另一个 jsp 例如 我在该jsp中没有任何其他数据 我想将值从该jsp index jsp 传递到重定向jsp login jsp 我将如何做到这一点 这里的 logonInput 是在struts con
  • lombok - 多个镜头中的 @Builder 模式

    I use Builder of 龙目岛项目 https github com rzwitserloot lombok 所以考虑我有这个例子 Builder public class Client private Getter Setter
  • Android - Java - 发送 facebook 聊天消息的意图(facebook 禁用 xmpp)

    Facebook 已弃用 xmpp API 有没有办法打开意图 或将数据传递到fb 以在Android设备上发送聊天消息 设备上安装的 Facebook 和 Messenger 应用 谢谢 您需要将 uri 传递给意图 这里10000572
  • Java 创建 Thread 实例时会发生什么

    我有一个关于 Java 线程和操作系统线程的问题 我读了Java 线程与 Pthreads https stackoverflow com questions 5269535 java threads vs pthreads and Jav
  • Java HttpURLConnection:内容长度计算

    我目前正在为 bitbucket issues RESTful API 开发一个库 我取得了很大的进步 现在我要解决这个部分更新问题 http confluence atlassian com display BBDEV Issues Is
  • 在 Android 中使用 lambdaj

    有人尝试过在android开发中使用lambdaj库吗 当我创建一个简单的小型java应用程序时 它对我来说工作得很好 但我无法在android应用程序中使用它 UPDATE 我正在添加 lambdaj lambdaj 2 3 2 with
  • 从外部 clojar 导入/使用资源

    我想做的是将一个大文件 MIDI 声音字体 打包到一个独立的 Maven repo clojar 中 然后能够以编程方式将其拉下来并从单独的项目中使用它 事实证明 这个看似简单的任务比我想象的要复杂 理想的情况是 如果有一种方法可以直接访问
  • 用java解密AES加密文件

    我有一个使用 AES 使用 java 应用程序加密的文件 我还有一个加密的密钥文件 但我不明白如何使用密钥来解密文件 大多数教程和示例都会在一个地方创建临时随机密钥 加密文件和解密 所以 问题是如何指定解密时必须使用的密钥 EDIT 我发现
  • 如何在 Eclipse 中使用 Hibernate Tools 生成 DAO?

    我在用着 Eclipse Java EE IDE Web 开发人员 版本 Indigo 发布 使用 hibernate 工具 我对 Eclipse 中的 hibernate 很陌生 所以我学习如何配置 hibernate 并使用注释生成 P
  • 当相应的 JTextfield 为空时,如何填充 JTable 中的所有项目

    我正在 Java 项目中设计一个高级搜索选项sqlite在 NetBeans 中 有5种不同JTextfields和 5 列 我想填充JTable具有相应的匹配标准 如果一个JTextfield为空 那么它应该选择该列的所有项目 我使用的查
  • Spring Boot 健康执行器 - 什么时候上线?

    我找不到任何有关 Springs Health Actuator 何时返回 UP 状态的文档 你能依靠一切吗 Components正在初始化 会不会 Controller准备好满足请求了吗 为了测试应用程序上下文是否已加载 您可以执行此自定
  • PostgreSQL 使用 JPA 和 Hibernate 抛出“列的类型为 jsonb,但表达式的类型为 bytea”

    这是我的实体类 映射到表中postgres 9 4 我正在尝试将元数据存储为jsonb在数据库中输入 Entity Table name room categories TypeDef name jsonb typeClass JsonBi
  • 如何在 SpringDoc OpenAPI 3 中引用文件?

    我有 Spring Boot 项目 我想在其中记录我的 API 这里是正在处理的 Web 服务的示例 ApiResponses value ApiResponse responseCode 200 content Content media
  • 1° 夏令时 Java 和 JS 表现出不同的行为

    假设巴西利亚 GMT 0300 夏令时于 21 10 2012 00 00 00 此时时钟应提前一小时 Java new Date 2012 1900 9 21 0 0 0 Sun Oct 21 01 00 00 BRST 2012 Chr
  • 文件构造函数说明

    我无法理解以下文件构造函数 public File String parent String child and public File File parent String child 参数有什么作用parent and child该文件
  • Spring JMS开始根据请求监听jms队列

    Spring提供 JMSListener用于监听来自特定队列的消息的注释 还有一个替代方案实施JmsListenerConfigurer http docs spring io spring docs current spring fram

随机推荐

  • 病毒分析系列2

    前言 接上篇 进行病毒分析时 在进行具体的病毒行为分析前 需要或许可疑文件的基本信息 此时可以使用pe工具进行分析和获取 基本静态信息获取 一般需要获取的信息包括但不限于 程序哈希值 导入函数表 导出函数表 是否有壳 程序的位数 字符串 具
  • 数据结构--常用比较排序

    目录 一 冒泡排序 二 选择排序 三 插入排序 四 希尔排序 五 堆排序 六 快速排序 6 1 key位置选择 6 2 一趟排序的方法 hoare版本 挖坑法 前后指针法 6 3 完整排序 七 归并排序 一 冒泡排序 通过两两顺序比较 把大
  • openwrt排错实战

    1 openwrt不断重启 原因 1 没有连接外网 看门狗机制启动 解决 将外网插到WAN口即可 2 重新刷了固件后灭有授权 解决 设备联网后 访问一下这个网站 http 192 168 1 1 cgi bin auth cgi 福利 op
  • 【Chisel硬件源源语】

    Chisel硬件源源语 前言 多路选择器 优先编码器 仲裁器 队列 存储 ROM RAM 从文件向RAM写入 计数器 状态机 总结 前言 通过之前的学习 读者应当已经掌握Chisel的基本数据类型和操作符的知识 并且了解如何构建小型电路 而
  • Word如何修改目录页不显示页码, 页码从第二页开始算起

    在做毕业设计的时候或者工作过程中往往需要插入目录 但是一旦插入目录就会导致页码的第一页被目录页占用 这不是我们想要的结果 我也是网上查了好久才弄好 今天写个教程出来供大家分享 步骤一 先在目录页面的底部插入分节符 下一页 步骤二 进入可修改
  • 读取文件名,若文件名无效返回文件名并显示异常(实例)

    异常文件名 import java io FileInputStream import java io FileNotFoundException import java io IOException import java util Sc
  • VUE写后台管理(2)

    VUE写后台管理 2 1 环境 2 Element界面 3 Vue Router路由 后台 1 左导航栏 2 上面导航条 1 环境 1 下载管理node版本的工具nvm Node Version Manager 2 安装node vue工程
  • Ubuntu安装问题汇总

    1 开机提示acpi error 一般这个问题是因为显卡的原因造成的 系统没有带显卡驱动 所以会有电源管理方面的问题 解决方法 安装时在install ubuntu界面按e 在linux开头那行的末尾处加入 acpi off 然后保存进行安
  • 封装ReactBootstrap组件实现文字展开功能

    封装ReactBootstrap组件实现文字展开功能 ExpendableText js import React useRef useEffect useState from react import Container CardGrou
  • 使用anaconda配置pycharm解释器环境

    因为作业需要写python代码 需要选择一个合适的写python代码的软件 学长推荐我用anaconda的juypter来写 并且anaconda自己配置环境比较容易 所以我就下载了anaconda 但是我不喜欢网页的风格 所以下载了pyc
  • docker 通过Dockerfile安装jdk

    将自己下载好的jdk压缩包 我下载的是jdk 8u261 linux x64 tar gz 上传到服务器上 我是使用的ubuntu 将jdk 8u261 linux x64 tar gz 复制到你的docker目录下 之后创建一个Docke
  • Mac终端终止命令

    control c 结束进程 control z 结束进程
  • 【Unity】[入门tips与代码优化] 一些入门概念、技巧和优化程序的原则方法

    本文将持续间断更新 本文主要面向初级程序员 为了方便Unity开发 有些快捷键的方式和一些通用性的技巧tips等会在这篇博客内持续更新 欢迎点赞收藏 快捷键 Ctrl S 快捷保存 闲着没事就来两下 Ctrl Shift F 在hierar
  • element-ui 表格合并之后鼠标hover效果

    element ui 表格合并之后鼠标hover效果 这次主要介绍行合并后的hover效果处理 由于element ui合并行之后 鼠标经过时 默认只会高亮第一行 如下图 但实际我们想要的是 在鼠标经过这一合并行时 被合并的行都是高亮状态
  • 磁盘分区 fdisk,挂载

    1 磁盘的分区主要分为基本分区 primary partion 和扩充分区 extension partion 两种 基本分区和扩充分区的数目之和不能大于四个 且基本分区可以马上被使用但不能再分区 扩充分区必须再进行分区后才能使用 也就是说
  • Hadoop Core、HBase 、ZooKeeper

    adoop HBase ZooKeeper三者关系与安装配置 复制链接 qqjue 论坛徽章 18 电梯直达 1
  • 互联网的组成——边缘部分+核心部分 (互联网报文交换方式:分组转发技术)

    首先 复习的第一本书是 计算机网络 作为计算机专业的学生 计算机网络是必须学好的一门功课 互联网的组成 边缘部分 核心部分 从互联网的工作方式上看 可以划分为两大块 1 边缘部分 由所有连接在互联网上的主机组成 这部分是用户直接使用的 用来
  • 特征工程系列:自动化特征构造

    特征工程系列 自动化特征构造 原创 JunLiang 木东居士 今天 0x00 前言 数据和特征决定了机器学习的上限 而模型和算法只是逼近这个上限而已 由此可见 特征工程在机器学习中占有相当重要的地位 在实际应用当中 可以说特征工程是机器学
  • Python 中的默认值是什么?

    Python 语言具有表示函数参数的语法和默认值的不同方式 默认值指示如果在函数调用期间未给出参数值 则函数参数将采用该值 默认值是使用表单关键字名称 值的赋值 运算符分配的 例 creating a function by giving
  • JavaWeb——Servlet(入门必备,web请求与响应的底层)

    这里写自定义目录标题 1 servlet介绍 1 1 什么是servlet 1 2 手动实现servlet程序的步骤 2 servlet的生命周期 3 get请求与post请求的分发 3 1 get请求 3 2 post请求 3 3 通过继