码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Servlet快速筑基


    目录

    Servlet线程安全问题

    Servlet不同的映射方式

    Servlet多路径映射

    Servlet创建时机

    默认Servlet


    • Servlet线程安全问题

    • 由于Servlet采用的是单例模式,也就是整个应用中只有一个实例对象
    • 所以我们需要分析这个唯一的实例对象中的类成员是否线程安全
    • 一个浏览器代表一个线程,多个浏览器代表多个线程
    • 按理说我们期望的应该是每个浏览器查看的都应该是自己的用户名,可结果却是浏览器中数据混乱
    • 因此,可以认为Servlet是线程不安全的
    • 解决:
    • 定义类成员要谨慎
    • 如果是共用的,并且只会在初始化时赋值,其它时间都是获取的话,那么是没问题的
    • 如果不是共用的,或者每次使用都有可能对其赋值,那就要考虑线程安全问题了;可以将其定义到doGet或doPost方法内或者使用同步功能即可
    • Servlet不同的映射方式

    • 第一种
    • 具体名称的方式
    • 访问的资源路径必须和映射配置完全相同
    • http://localhost:8080/demo2/cpc
    • 第二种
    • /开头+通配符的方式
    • 只要符合目录结构即可,不用考虑结尾是什么
    • http://localhost:8080/demo2/cpc/suibianxie
    • 第三种
    • 通配符+固定格式结尾的方式
    • 只要符合固定结尾格式即可,不用考虑前面的路径
    • http://localhost:8080/demo2/tjtjtj.cpc
    • 注意:优先级问题
    • 越是具体的优先级越高,越是模糊通用的优先级越低
    • 第一种>第二种>第三种
    • Servlet多路径映射

    • 可以给Servlet配置多个访问映射,从而根据不同的请求路径来实现不同的功能
    • 场景分析:
    • 如果访问的资源路径是/vip
    • 商品价格打9折
    • 如果访问的资源路径是/svip
    • 商品价格打5折
    • 如果访问的资源路径是其它
    • 商品价格不打折
    • 代码实现
    • getRequestURI()方法
    • getRequestURI()方法返回的是一个字符串,内容为整个访问的url的path内容,不带query;
    • 例:输入的url地址为http://localhost:8080/testproject/test
    • getRequestURI()返回/testproject/test,为一个String
    • 配置
    • 采用第二种
    • /开头+通配符的方式
    • 代码
    • 测试
    • http://localhost:8080/demo2/cpc/vip
    • http://localhost:8080/demo2/cpc/svip
    • http://localhost:8080/demo2/cpc
    • Servlet创建时机

    • 第一次访问时创建
    • 优势:减少对服务器内存的浪费;提高了服务器启动的效率
    • 弊端:如果有一些要在应用加载时就做的初始化操作,则无法完成
    • 服务器加载时创建
    • 优势:提前创建好对象,提高了首次执行的效率;可以完成一些应用加载时要做的初始化操作
    • 弊端:对服务器内存占用较多,影响了服务器启动的效率
    • 要修改Servlet创建时机的话:
    • 就要在<servlet>标签中,添加<load-on-startup>标签
    • 其中写个整数
    • 正整数代表服务器加载时创建,值越小,优先级越高
    • 负整数或不写代表第一次访问时创建
    • 默认Servlet

    • 默认Servlet是由服务器提供的一个Servlet
    • 它配置在Tomcat的conf目录中的web.xml中
    • 它的映射路径是<url-pattern>/<url-pattern>
    • 我们在发送请求时,首先会在我们项目中的web.xml中查找映射配置,找到则执行
    • 但是当找不到对应的Servlet路径时
    • 就去找默认的Servlet,由默认Servlet处理
    • 所以,一切都是Servlet
  • 相关阅读:
    [go学习笔记.第十二章.文件操作] 1.文件的基本介绍以及基本操作
    STM32实现0.96寸OLED显示模拟IIC和IIC四种实现(标准库和HAL库)
    【黑马程序员pink名师讲CSS】学好CSS有这一篇就够了(CSS笔记)
    C++ 【模板】
    视频太大怎么压缩变小?把视频变小这样做
    QT_day3
    一文理解虚拟机栈
    541. 反转字符串 II
    html网页如何获取后台数据库的数据(html + ajax + php + mysql)
    nexus创建Maven私服图文教程
  • 原文地址:https://blog.csdn.net/weixin_59624686/article/details/125422552
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号