servlet 是运行在 Web 服务器(tomcat)中的小型 Java 程序(即:服务器端的小应用程序

(其实就是一个java类,只不过不用再new了)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求

一、实现javax.servlet.Servlet接口

写一个java类,实现servlet接口

输入impl 然后alt+/可以自动补齐 。

鼠标放在Servlet上可以自动出现要包含的包名。

下图鼠标放在1的位置然后选择2这样就会出现要实现的方法。

然后如下图修改web.xml文件

注意:下图中的1是项目的全路径,如果你在建web project项目时填的是com.it.servlet那么下面应该填的是com.it.servlet .Demo1  下图中的2不要忘了/

全路径复制方法入下图:(这样就可以复制出com.it.servlet.Demo1 )

应用部署到服务器(tomcat)

启动服务器,输入 http://localhost:8080/day8/demo1

浏览器啥都没有,因为我们啥都没写。。。。。原理如下:

执行过程如下:

 tomcat接受浏览器信息,然后找到相应的web project(day07),然后根据web.xml找到servletDemo1(就是我们写的类),并实例化servletDemo1。 然后tomcat调用servlet中的init()方法 Service()方法等

二、继承javax.servet.GenericServlet类

只要重写service方法就行了——适配器模式

然后输入下面的程序:(技巧 alt+ / 自动补齐GenericServlet  注意大小写)

然后鼠标放到servlet_demo2处自动补齐service方法

然后在web.xml下输入

然后重新部署tomcat

然后在浏览器中输入:

http://localhost:8080/day07/demo2

(就会在myeclipse下框中输出servletDemo2 )

按住ctrl键然后点击下图

然后点击下图

然后点击下图

然后倒入tomcat源码

下图,点击1显示出来的就是GenericServlet类的所有方法,带三角号(箭头2)的是继承servlet的,不带三角号(箭头3)的是自己实现的方法。

三、继承javax.servlet.http.HttpServlet类

(模板方法设计模式)看源码可知其实就是多态  【开发中常用】

新建应用程序然后导包

插入Override函数(重写函数):

在1空白处点击右键,然后选择Source->Override/Implement Methods...如下图:

然后如下图选择doget()方法  dopost()方法

然后重写这两个方法如下图

在web.xml文件输入

然后重新加载

浏览器中访问

http://localhost:8080/day07/demo3

就会在 Myeclipse 出现

原理:

Tomcat会创建一个demo3对象,但是demo3是继承httpservlet类的,而浏览器在访问服务器时,Tomcat会调用service方法,但是httpservlet类里重写了GenericServlet类的service方法,所以会调用httpservlet类中的service方法,这个方法中调用了doget方法。所以我们要实现doget方法(按住ctrl键,然后鼠标点击相关的类名和函数名可以查找看一下源码)

Servlet --> GenericServlet --> HttpServlet  (继承HttpServlet)

曾祖父         爷爷                    爸爸                    孙子

更简单的创建    【自动生成web.xml 中的内容】

然后就会自动生成惹

输入http://localhost:8080/day9/servlet/demo4 即可访问

servet映射细节

在Web.xml添加下图箭头1,那么在浏览器中输入:

http://localhost:8080/day9/demo666 访问的也是demo4中的内容·

web.xml如下图添加的内容作用:

上图的箭头1  *.do 代表任意字符串.do 都能访问demo4

浏览器输入:

http://localhost:8080/day9/demo.do

上图的箭头2   /*    代表任意字符串都能访问demo4

浏览器输入:

http://localhost:8080/day9/de

上图的箭头3   /action/*    以/action开头的请求都可以访问demo4

浏览器输入:

http://localhost:8080/day9/action/dew

匹配规则:

优先级:从高到低

绝对匹配(就是名字完全匹配)-->  /开头匹配 --> 后缀名方式匹配

打开 F:\apache-tomcat-7.0.52\conf 下的web.xml在97行和360行可知只要在浏览器中输入

http://localhost:8080/day9/ 默认打开的资源都是servlet

Servlet 三种创建方式的更多相关文章

  1. Servlet三种创建方式

    直接实现 Servlet 接口不太方便,所以 Servlet 又内置了两个 Servlet 接口的实现类(抽象类),分别为 GenericServlet 和 HttpServlet,因此,创建 Ser ...

  2. Struts2之命名空间与Action的三种创建方式

    看到上面的标题,相信大家已经知道我们接下来要探讨的知识了,一共两点:1.package命名空间设置:2.三种Action的创建方式.下面我们开始本篇的内容: 首先我们聊一聊命名空间的知识,namesp ...

  3. JavaScript 闭包的详细分享(三种创建方式)(附小实例)

    JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...

  4. 2019年6月14日 Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)

    摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端传输数据编码格式contentType 批量插入数据和自定义分页器 一.MVC与MTV MVC(Model View Controller ...

  5. Django多对多表的三种创建方式,MTV与MVC概念

    MTV与MVC MTV模型(django): M:模型层(models.py) T:templates V:views MVC模型: M:模型层(models.py) V:视图层(views.py) ...

  6. Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08

    目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件 ...

  7. django----多对多三种创建方式 form组件

    目录 多对多三种创建方式 全自动 全手动 半自动 form组件 基本使用 form_obj 及 is_valid() 前端渲染方式 取消前端自动校验 正则校验 钩子函数(Hook方法) cleaned ...

  8. Django框架(十)--ORM多对多关联关系三种创建方式、form组件

    多对多的三种创建方式 1.全自动(就是平常我们创建表多对多关系的方式) class Book(models.Model): title = models.CharField(max_length=32 ...

  9. 多对多三种创建方式、forms组件、cookies与session

    多对多三种创建方式.forms组件.cookies与session 一.多对多三种创建方式 1.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字 ...

随机推荐

  1. python_实现员工信息表

    实现员工信息表 文件存储格式如下:id,name,age,phone,job1,Alex,22,13651054608,IT2,Egon,23,13304320533,Tearcher3,nezha, ...

  2. Django学习系列3:创建仓库

    在创建仓库之前,在项目superlists中新建一个Python文件,命名为functional_tests.py,里面的内容如下: # File: functional_test.py # Auth ...

  3. init.uniform / unit.normal

    均匀分布nn.init.uniform(tensor,a=0,b=1)tensor -n维的torch.Tensora 均匀分布的下界,默认值为0b 均匀分布的上界,默认值为1 正态分布torcn.n ...

  4. Gym-100923L-Por Costel and the Semipalindromes(进制转换,数学)

    链接: https://vjudge.net/problem/Gym-100923L 题意: Por Costel the pig, our programmer in-training, has r ...

  5. 【shell】sed后向引用替换文本

    要求如下: 原文 <server name="92服" port="10092" os="android" hidden=" ...

  6. Python 变量类型 Ⅱ

    Python字符串 字符串或串(String)是由数字.字母.下划线组成的一串字符. 一般记为 : s="a1a2···an"(n>=0) 它是编程语言中表示文本的数据类型. ...

  7. angular-seed — AngularJS种子项目

    AngularJS Seed 是典型 AngularJS web 应用的应用骨架,可以快速启动你的 AngularJS webapp 项目和这些项目的开发环境. AngularJS Seed 包括一个 ...

  8. springboot(十)使用LogBack作为日志组件

    简介: 企业级项目在搭建的时候,最不可或缺的一部分就是日志,日志可以用来调试程序,打印运行日志以及错误信息方便于我们后期对系统的维护,在SpringBoot兴起之前记录日志最出色的莫过于log4j了, ...

  9. codevs 1255 搭积木 x

    1255 搭积木 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一种积木搭建方式,高为H的积木,最底层有M个积木,每一层的积木 ...

  10. The GuidRepresentation for the reader is CSharpLegacy, which requires the binary sub type to be Uuid

    使用客户端链接MongoDb报错 The GuidRepresentation for the reader is CSharpLegacy, which requires the binary su ...