码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用HttpServlet和@WebServlet注解


    使用HttpServlet

    `HttpServlet`,它是遵循HTTP协议的一种Servlet,继承自`GenericServlet`,它根据HTTP协议的规则,完善了service方法

    现在只需要继承HttpServlet来编写我们的Servlet就可以了

    1. @WebServlet("/test")
    2. public class TestServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. resp.setContentType("text/html;charset=UTF-8");
    6. resp.getWriter().write("

      恭喜你解锁了全新玩法

      "
      );
    7. }
    8. }

    @WebServlet注解详解

    1. @Target({ElementType.TYPE})
    2. @Retention(RetentionPolicy.RUNTIME)
    3. @Documented
    4. public @interface WebServlet {
    5. String name() default "";
    6. String[] value() default {};
    7. String[] urlPatterns() default {};
    8. int loadOnStartup() default -1;
    9. WebInitParam[] initParams() default {};
    10. boolean asyncSupported() default false;
    11. String smallIcon() default "";
    12. String largeIcon() default "";
    13. String description() default "";
    14. String displayName() default "";
    15. }

    首先可以看出该注解的作用范围是类,然后name属性就是Servlet名称,而urlPatterns和value实际上是同样功能,就是代表当前Servlet的访问路径,它不仅仅可以是一个固定值,还可以进行通配符匹配

    @WebServlet("/test/*")

    @WebServlet("*.js")

    使用@WebServlet("/")时,如果没有找到匹配当前访问路径的Servlet,那么久会使用此Servlet进行处理。

    还可以为一个Servlet配置多个访问路径:

    @WebServlet({"/test1", "/test2"})

    loadOnStartup属性,此属性决定了是否在Tomcat启动时就加载此Servlet,默认情况下,Servlet只有在被访问时才会加载,它的默认值为-1,表示不在启动时加载,我们可以将其修改为大于等于0的数,来开启启动时加载。并且数字的大小决定了此Servlet的启动优先级。

    测试例

    1. @WebServlet(value = "/test", loadOnStartup = 1)
    2. public class TestServlet extends HttpServlet {
    3. @Override
    4. public void init() throws ServletException {
    5. super.init();
    6. log.info("我被初始化了!");
    7. }
    8. @Override
    9. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    10. resp.setContentType("text/html;charset=UTF-8");
    11. resp.getWriter().write("

      恭喜你解锁了全新玩法

      "
      );
    12. }
    13. }

  • 相关阅读:
    【考研数学】高等数学第七模块 —— 曲线积分与曲面积分 | 1. 对弧长的曲线积分(第一类曲线积分)
    部署应用链太费心?Tanssi 教你轻松开发部署
    干洗店预约下单管理系统收衣开单拍照必备软件
    Dubbo-Filter机制概述
    Redis学习笔记(下):持久化RDB、AOF+主从复制(薪火相传,反客为主,一主多从,哨兵模式)+Redis集群
    IEEE Standard for SystemVerilog Chapter9. Processes
    前端面试题:1.B/S架构和C/S架构;2定义vue-router的动态路由
    Capacitor 打包 h5 到 Android 应用,uniapp https http net::ERR_CLEARTEXT_NOT_PERMITTED
    【FAQ】接入HMS Core广告服务中的常见问题总结和解决方法
    Week1 基础算法
  • 原文地址:https://blog.csdn.net/weixin_51992178/article/details/126676450
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号