首页 > 编程语言 >Javaweb核心之注解开发Servlet

Javaweb核心之注解开发Servlet

时间:2022-09-27 22:11:03浏览次数:81  
标签:xml 01 Javaweb 列表 cell 2021 注解 Servlet

这是一篇关于讲解如何正确使用51CTO博客-Markdown的排版示例,希望通过此,大家都能轻松上手,都能通过Markdown 能# 4 注解开发Servlet

4.1 Servlet3.0规范

4.2 注解开发入门案例

4.2.1 自动注解配置

1)配置步骤

第一步:创建JavaWeb工程,并移除web.xml

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

第二步:编写Servlet

public class ServletDemo1 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Servlet Demo1 Annotation");
    }
}

第三步:使用注解配置Servlet 在这里插入图片描述

第四步:测试

在这里插入图片描述

2)注解详解

/**
 * WebServlet注解
 * @since Servlet 3.0 (Section 8.1.1)
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface WebServlet {

    /**
     * 指定Servlet的名称。
     * 相当于xml配置中<servlet>标签下的<servlet-name>
     */
    String name() default "";

    /**
     * 用于映射Servlet访问的url映射
     * 相当于xml配置时的<url-pattern>
     */
    String[] value() default {};

    /**
     * 相当于xml配置时的<url-pattern>
     */
    String[] urlPatterns() default {};

    /**
     * 用于配置Servlet的启动时机
     * 相当于xml配置的<load-on-startup>
     */
    int loadOnStartup() default -1;

    /**
     * 用于配置Servlet的初始化参数
     * 相当于xml配置的<init-param>
     */
    WebInitParam[] initParams() default {};

    /**
     * 用于配置Servlet是否支持异步
     * 相当于xml配置的<async-supported>
     */
    boolean asyncSupported() default false;

    /**
     * 用于指定Servlet的小图标
     */
    String smallIcon() default "";

    /**
     * 用于指定Servlet的大图标
     */
    String largeIcon() default "";

    /**
     * 用于指定Servlet的描述信息
     */
    String description() default "";

    /**
     * 用于指定Servlet的显示名称
     */
    String displayName() default "";
}

4.2.2 手动创建容器

1)前置说明

在使用Servlet3.1版本的规范时,脱离了web.xml进行注解开发,它除了支持使用注解的配置方式外,还支持纯手动创建Servlet容器的方式。要想使用的话,必须遵循它的编写规范。它是从Servlet3.0规范才开始引入的,加入了一个新的接口:

package javax.servlet;

import java.util.Set;

/**
 * 初始化Servlet容器必须实现此接口
 * 它是Servlet3.0规范提供的标准接口
 * @since Servlet 3.0
 */
public interface ServletContainerInitializer {
     /**
     * 启动容器时做一些初始化操作,例如注册Servlet,Filter,Listener等等。
 	 * @since Servlet 3.0
     */
    void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException;
}

同时可以利用@HandlesTypes注解,把要加载到onStartup方法中的类字节码传入进来,@HandlesTypes源码如下:

/**
 * 用于指定要加载到ServletContainerInitializer接口实现了中的字节码
 * @see javax.servlet.ServletContainerInitializer
 * @since Servlet 3.0
 */
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface HandlesTypes {

    /**
     * 指定要加载到ServletContainerInitializer实现类的onStartUp方法中类的字节码。
     * 字节码可以是接口,抽象类或者普通类。
     */
    Class[] value();
}

2)编写步骤

第一步:创建工程,并移除web.xml

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

第二步:编写Servlet

public class ServletDemo1 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Servlet Demo1 Annotation manual");
    }
}

第三步:创建初始化容器的类,并按照要求配置

public class MyServletContainerInitializer implements ServletContainerInitializer {

    @Override
    public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
       
    }
}

在脱离web.xml时,要求在src目录下包含一个META-INF目录,位置和及字母都不能改变,且严格区分大小写。在目录中创建一个名称为javax.servlet.ServletContainerInitializer的文件,里面写实现了ServletContainerInitializer接口的全限定类名。如下图所示: 在这里插入图片描述

第四步:编写注册Servlet的代码

在这里插入图片描述

第五步:测试

在这里插入图片描述够让自己的文章有更加出色、更清晰明了的排版。

什么是 Markdown

Markdown (MD) 是现在普遍使用的一种文档书写语言格式,只需用一些非常简单易记的符号,如(# * / > [] ()\ ),就可以轻松写出一篇具有良好的排版和可读性的文章。

语法示例

1.基本语法

一些常规的语法格式。

1.1 标题

标题用#+空格表示,不同数量的#可以表示不同的标题

# Heading 1

## Heading 2

### Heading 3

#### Heading 4

##### Heading 5

###### Heading 6

1.2 粗体和斜体粗体

在需要操作的文字前后各加三个“*”

这个是粗体斜体:在需要斜体的文字前后各加一个“*”

这个是斜体用粗体加斜体:在需要操作的文字前后各加三个“*”

这个是粗体加斜体

1.3 删除线删除线语法

在需要删除的文字前后各使用两个符合“~~”要删除的文字

1.4 引用

符号“>”后面书写文字。示例:

 这个是引用

1.5 目录

可通过:@[toc](目录) 生成目录。

1.6 空行

如需空行,则可\ +回车换行。

2.LaTeX公式

LaTeX数学公式有两种:行中公式和独立公式(行间公式)。行中公式放在文中与其它文字混编,独立公式单独成行。

2.1 行内公式

$=mc^2$

$=mc^2$

2.2 独立公式

$$=mc^2$$

$$=mc^2$$

更多语法参考:Markdown 编辑器添加 Latex数学公式教程

3.代码高亮

3.1 普通


*emphasize*    **strong**

_emphasize_    __strong__

@a = 1

3.2 语法高亮支持

如果在 ``` 后面跟随语言名称,可以有语法高亮的效果,如:

3.2.1 html/xml 代码高亮示例

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>  

</body>

</html>

3.2.2 Python高亮示例

#!/usr/bin/python3

# Fibonacci series: 斐波纳契数列

# 两个元素的总和确定了下一个数

a, b = 0, 1

while b < 10:

    print(b)

    a, b = b, a+b

3.2.3 CSS 文件示例

body {

    background-color: red;

}



h1 {

    color: orange;

    text-align: center;

}



p {

    font-family: "Times New Roman";

    font-size: 20px;

}

支持语言有: HTML/XML, JSON, Bash, CSS, Java, JavaScript, PHP, Python, Rust, C/C++

4.绘制表格

| Column 1 | Column 2 | Column 3 |

| -------- | -----: | :----: |

| cell 1 | cell 2 | cell 3 |

| cell 4 | cell 5 | cell 6 |

| cell 7 | cell 8 | cell 9 |

| Column 1 | Column 2 | Column 3 |

| -------- | -----: | :----: |

| cell 1 | cell 2 | cell 3 |

| cell 4 | cell 5 | cell 6 |

| cell 7 | cell 8 | cell 9 |

5.Todo列表

语法:

- [ ] 在Blog-51CTO写一篇技术博客

- [x] 5分钟搞定俄罗斯方块---组件化实战

- [x] 服务早期红利与各项技术场景创新分析

显示:

  • [ ] 在Blog-51CTO写一篇技术博客

  • [x] 5分钟搞定俄罗斯方块---组件化实战

  • [x] 服务早期红利与各项技术场景创新分析

6.链接

支持直接粘贴链接地址。链接语法和显示如下:

语法1:[链接名称](http://链接网址)

显示:链接名称

或语法2:<http://链接网址>

显示:http://链接网址

7. 图片

可通过上传按钮上传图片,也支持直接粘贴图片,也支持拖拽上传图片。图片语法和显示如下:

语法:![请添加链接描述](图片地址)

显示:![请添加链接描述](图片地址)

8. 有序列表&有序列表

无序列表的使用,在符号“-”后加空格使用。如下:

  • 列表项

  • 列表项

  • 列表项

如果要控制列表的层级,则需要在符号“-”前使用空格。如下:

  • 列表项

  • 列表项

    • 列表内容

    • 列表内容

有序列表的使用,在数字及符号“.”后加空格几个,如下:

  1. 列表项

  2. 列表项

    1. 列表内容

    2. 列表内容

      1. 子列表内容

      2. 子列表内容

      3. 子列表内容

9. 分割线

可以在一行中用三个以上的星号、减号、底线来建立一个分隔线,同时需要在分隔线的上面空一行。

例:

-------

*****

______




10. 符号转义

如果你的描述中需要用到 markdown 的符号,比如 # * 等,但又不想它被转义,这时候可以在这些符号前加反斜杠,如 \ # *进行避免。

11. 导入和导出

支持正文导出.md的文档,支持导入.md格式的文档。

导入:支持导入本地 .md格式的文档

导出:正文内容可以导出本地.md格式的文档

12.高效绘制流程图


 ` ` `flow

st=>start: Start

op=>operation: Your Operation

cond=>condition: Yes or No?

e=>end



st->op->cond

cond(yes)->e

cond(no)->op

` ` `

显示:


st=>start: Start

op=>operation: Your Operation

cond=>condition: Yes or No?

e=>end



st->op->cond

cond(yes)->e

cond(no)->op

13.高效绘制序列图


 ` ` `seq

Alice->Bob: Hello Bob, how are you?

Note right of Bob: Bob thinks

Bob-->Alice: I am good thanks!

` ` `


Alice->Bob: Hello Bob, how are you?

Note right of Bob: Bob thinks

Bob-->Alice: I am good thanks!

14.高效绘制甘特图


 ` ` `gantt

    axisFormat  %m/%d

    title 项目开发流程

    section 项目立项

        需求分析       :a1, 2021-01-01, 5d

        可行性报告     :after a1, 6d

        概念验证       : 5d

    section 项目实施

        概要设计      :2021-01-14  , 5d

        详细设计      :2021-01-19, 10d

        编码          :2021-01-29, 10d

        测试          :2021-02-08, 5d

    section 发布验收

        发布: 3d

        验收: 3d

` ` `


    axisFormat  %m/%d

    title 项目开发流程

    section 项目立项

        需求分析       :a1, 2021-01-01, 5d

        可行性报告     :after a1, 6d

        概念验证       : 5d

    section 项目实施

        概要设计      :2021-01-14  , 5d

        详细设计      :2021-01-19, 10d

        编码          :2021-01-29, 10d

        测试          :2021-02-08, 5d

    section 发布验收

        发布: 3d

        验收: 3d

15. 其他说明

使用WuKong编辑器发布的内容只能WuKong编辑器编辑,不可切换Markdown编辑器;

使用Markdown编辑器发布的内容只能Markdown编辑器编辑,不可切换WuKong编辑器编辑。

标签:xml,01,Javaweb,列表,cell,2021,注解,Servlet
From: https://blog.51cto.com/u_15748182/5710014

相关文章

  • Javaweb核心响应对象
    1响应对象1.1响应对象概述1.1.1关于响应响应,它表示了服务器端收到请求,同时也已经处理完成,把处理的结果告知用户。简单来说,指的就是服务器把请求的处理结果告知客户端......
  • javaweb核心之会话技术
    1会话技术1.1会话管理概述1.1.1什么是会话这里的会话,指的是web开发中的一次通话过程,当打开浏览器,访问网站地址后,会话开始,当关闭浏览器(或者到了过期时间),会话结束。举......
  • springboot 总结(建立父项目子项目)javaConfig使用及注解
    一、建立父项目和子项目1)父项目建立,需要在pom文件添加packaging标签  2)建立子项目需要在父项目上右击model(模块)进行新建  这个时候看子项目会有父项......
  • @ApiImplicitParams注解的详细使用
    一、@ApiImplicitParams注解的详细使用业务需求:1.根据服务员类别id(单个id)+服务员星级id(id的list)查询对应的服务员列表1.controller代码:点击查看代码//根据服务员星......
  • java 注解方式实现Bigdecimal保留两位小数
    1.新建类  BigDecimalSerializerimportcn.hutool.core.util.ObjectUtil;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.......
  • JavaWeb--JavaScript--2022年9月27日
    第一节  简介  第二节  JavaScript引入方式1、内部脚本:将JS代码定义在HTML页面中<!DOCTYPEhtml><htmllang="en"><head>  <meta......
  • HttpServletRequest详解
    链接:https://blog.csdn.net/wwq0813/article/details/90256058链接:https://www.cnblogs.com/wuxu/p/10902132.html ......
  • JavaWeb--HTML & CSS--2022年9月27日
    第一节  HTML--w3school网站可学习1、快速入门A、总结HTML文件以.htm或者.html为扩展名HTML结构标签  ......
  • JavaWeb的servlet的doGet,doPost方法
    packagetop.lostyou.servlet;importcom.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;importjavax.servlet.ServletException;importjavax.servlet.ht......
  • Servlet的web.xml,配置映射路径(既访问的位置)
    <?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"......