码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • servlet基础知识


    目录

    • 什么是servlet
      • 概念/定义
      • 作用
    • servlet容器
      • 概念/是什么
      • 作用
      • 如何配置和管理
    • servlet生命周期
      • 有哪些生命周期
      • 每个周期中可以执行哪些操作
    • 创建和编写servlet
      • 如何创建一个简单的servlet
      • servlet类的结构是什么样的
      • 如何处理HTTP请求和响应
    • servlet映射和URL模式
      • 什么是servlet映射
      • 如何将servlet映射到特定的URL
      • 如何使用URL模式匹配和处理不同的请求?
    • 请求和响应对象
      • 什么是HttpServletRequest和HttpServletResponse
      • 如何从请求对象中获取请求参数和请求体
      • 如何使用响应对象来生成http响应
    • 初始化参数
      • 什么是servlet初始化参数
      • 如何在web.xml或servlet注解中初始化参数
      • 如何从servlet中访问初始化参数

    什么是servlet

    概念/定义

    广义:JAVA EE规范
    狭义:Servlet接口

    作用

    实现动态页面

    servlet容器

    概念/是什么

    管理和维护servlet对象的容器

    作用

    管理和维护servlet对象

    如何配置和管理

    配置:
    1)@WebServlet()注解
    2)web.xml文件

    servlet生命周期

    有哪些生命周期

    1)init:实例化
    2)service:工作
    3)destroy:销毁

    每个周期中可以执行哪些操作

    1)init:生成servlet对象实例,初始化需要的资源
    2)service:实现业务逻辑
    3)destroy:关闭servlet,释放资源

    创建和编写servlet

    如何创建一个简单的servlet

    public class MyClass implements Servlet {}
    
    • 1

    servlet类的结构是什么样的

    例如:Servlet --> GenericServlet --> HttpServlet
    常用的servlet类如下:
    在这里插入图片描述

    在这里插入图片描述
    说明:图片来源

    问题:怎么知道什么时候用哪个类?

    如何处理HTTP请求和响应

    通过HttpServletRequest和HttpServletResponse对象

    servlet映射和URL模式

    什么是servlet映射

    把一个请求指定给对应的Servlet

    如何将servlet映射到特定的URL

    通过@WebServlet或web.xml配置

    如何使用URL模式匹配和处理不同的请求?

    可以通过不同的匹配规则来控制,在servlet中有4个规则:精准匹配、目录匹配、扩展名匹配、任意匹配。
    使用注解配置示例如下:

    //精准匹配
    @WebServlet("/my/test")
    
    //目录匹配
    @WebServlet("/my/*")
    
    //扩展名匹配
    @WebServlet("/my/.txt")
    
    //任意匹配1
    @WebServlet("/*")
    //任意匹配2,tomcat默认为这个
    @WebServlet("/")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    请求和响应对象

    什么是HttpServletRequest和HttpServletResponse

    HttpServletRequest:处理http请求的对象
    HttpServletResponse:处理http响应的对象

    如何从请求对象中获取请求参数和请求体

    1)获取请求参数

    HttpServletRequest request  = 接收到的HttpServletRequest或ServletRequest;
    request.getParamter("paramName");
    request.getParamterValues("paramName");
    request.getParamterNames();
    request.getParameterMap();
    //上面的paramName就是http请求中的各种参数名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2)获取请求头

    HttpServletRequest request  = 接收到的HttpServletRequest或ServletRequest;
    request.getHeader("headName");
    request.getDateHeader("headName");
    request.getHeaderNames("headName");
    request.getIntHeader("headName");
    //上面的headName就是http请求中的各种请求头名称
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如何使用响应对象来生成http响应

    使用PrintWriter或者ServletOutputStream把响应数据放到http响应中

    初始化参数

    什么是servlet初始化参数

    在加载或启动servlet时,初始化一些用于servlet自身的参数,比如说关于数据库连接、日志配置等的参数。这些参数在整个生命周期中只执行一次,并在整个生命周期的任意一个周期都可以获取到。

    如何在web.xml或servlet注解中初始化参数

    1)在web.xml中配置

    <servlet>
        <servlet-name> myServlet servlet-name>
        <servlet-class> com.example.myServlet servlet-name>
        <init-param> paramName1 <init-param>
        <ini-param> paramValue1 <init-param>
        <init-param> paramName2 <init-param>
        <ini-param> paramValue2 <init-param>
    servlet>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2)通过@WebServlet中配置

    @WebServlet(urlPatterns = "/my", initParams = {
    @WebInitParam=(name = "paraName1", value = "paramValue1"),
    @WebInitParam=(name = "paraName2", value = "paramValue2")
    })
    
    • 1
    • 2
    • 3
    • 4

    如何从servlet中访问初始化参数

    直接在对应的myServlet 类中使用getInitParameter(“paraName1”)来获取对应的初始化参数

    关联知识:面试中喜欢和JSP对比提问

  • 相关阅读:
    Java学习-面向对象下
    VRRP 虚拟路由器冗余协议的解析和配置
    2024年阿里云2核4G服务器租用价格_2核4G性能测评_支持人数
    JavaScript入门到精通(五)连载
    Ubuntu Linux 24.04 C语言TCP/IP socket编程基础知识
    苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
    扩展与并查集
    2 资源关系 | 到底什么是”局“-- 清华宁向东的管理学课总结
    Vue3异步组件和Suspense
    Linux网络-MAC协议
  • 原文地址:https://blog.csdn.net/shuo_haiying/article/details/133675373
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号