• 使用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. }

  • 相关阅读:
    【MySQL】MySQL中如何实现分页操作
    腾讯云服务器南京地域详细介绍、测试IP和Ping值测速
    不常见的JS加密分析
    地级市市场化指数+樊纲市场化指数(包含分省、市两份数据)
    解决npm install 安装报错记录贴
    Nacos 概念介绍 配置模型
    Java8新特性stream和parallelStream有什么区别
    LeetCode Cookbook 链表习题 上篇
    从投机走到娱乐——Web3 游戏八月月报
    用于可扩展、可重用和优雅的代码的Python工厂
  • 原文地址:https://blog.csdn.net/weixin_51992178/article/details/126676450