Servlet 三种创建方式
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
浏览器输入:
上图的箭头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 三种创建方式的更多相关文章
- Servlet三种创建方式
直接实现 Servlet 接口不太方便,所以 Servlet 又内置了两个 Servlet 接口的实现类(抽象类),分别为 GenericServlet 和 HttpServlet,因此,创建 Ser ...
- Struts2之命名空间与Action的三种创建方式
看到上面的标题,相信大家已经知道我们接下来要探讨的知识了,一共两点:1.package命名空间设置:2.三种Action的创建方式.下面我们开始本篇的内容: 首先我们聊一聊命名空间的知识,namesp ...
- JavaScript 闭包的详细分享(三种创建方式)(附小实例)
JavaScript闭包的详细理解 一.原理:闭包函数--指有权访问私有函数里面的变量和对象还有方法等:通俗的讲就是突破私有函数的作用域,让函数外面能够使用函数里面的变量及方法. 1.第一种创建方式 ...
- 2019年6月14日 Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)
摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端传输数据编码格式contentType 批量插入数据和自定义分页器 一.MVC与MTV MVC(Model View Controller ...
- Django多对多表的三种创建方式,MTV与MVC概念
MTV与MVC MTV模型(django): M:模型层(models.py) T:templates V:views MVC模型: M:模型层(models.py) V:视图层(views.py) ...
- Django-多对多关系的三种创建方式-forms组件使用-cookie与session-08
目录 表模型类多对多关系的三种创建方式 django forms 组件 登录功能手写推理过程 整段代码可以放过来 forms 组件使用 forms 后端定义规则并校验结果 forms 前端渲染标签组件 ...
- django----多对多三种创建方式 form组件
目录 多对多三种创建方式 全自动 全手动 半自动 form组件 基本使用 form_obj 及 is_valid() 前端渲染方式 取消前端自动校验 正则校验 钩子函数(Hook方法) cleaned ...
- Django框架(十)--ORM多对多关联关系三种创建方式、form组件
多对多的三种创建方式 1.全自动(就是平常我们创建表多对多关系的方式) class Book(models.Model): title = models.CharField(max_length=32 ...
- 多对多三种创建方式、forms组件、cookies与session
多对多三种创建方式.forms组件.cookies与session 一.多对多三种创建方式 1.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字 ...
随机推荐
- Big Data(七)MapReduce计算框架(PPT截图)
一.为什么叫MapReduce? Map是以一条记录为单位映射 Reduce是分组计算
- Linux 安装 nginx 安装PCRE库
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是 ...
- svn 服务器的搭建以及客户端的使用
1.svn 服务器的搭建以及客户端的使用,安装见下面的博客 https://blog.csdn.net/zh123456zh789/article/details/80921179 说明:服务器只是用 ...
- 【HDU4003】Find Metal Mineral
题目大意:给定一棵 N 个节点的有根树,边有边权,在根结点处有 K 个人,这些人会遍历树上的所有边,求如何遍历才能使得所有人走过路径的边权和最小. 题解: 引理:对于一棵子树来说,若存在 M>0 ...
- webpack多页应用
本文主要讲了webpack怎么搭建多页应用,熟悉下webpack的基本用法. 新建文件夹,目录结构如下: 然后 cd webpack-test npm init(根目录下创建了一个pakage.jso ...
- ELF程序头部及程序加载
程序头部 程序头部描述与程序执行直接相关的目标文件结构信息.用来在文件中定位各个段的映像.同时包含其他一些用来为程序创建进程映像所必需的信息. 可执行文件或者共享目标文件的程序头部是一个结构数组,每个 ...
- h5页面ios键盘弹出收起后页面底部留白问题
<input placeholder="验证码" type="tel" v-model="verify" maxlength=&quo ...
- HDU-1045-Fire Net(最大匹配)
链接: https://vjudge.net/problem/HDU-1045#author=zzuli_contest 题意: 假设我们有一个有直街的广场城市.城市地图是一个方形板,有n行和n列,每 ...
- 对JavaScript 引擎基础:原型优化的研究 -----------------------引用
一.优化层级与执行效率的取舍 介绍了现代 JavaScript 引擎通用的工作流程: 我们也指出,尽管从高级抽象层面来看,引擎之间的处理流程都很相似,但他们在优化流程上通常都存在差异.为什么呢?为什么 ...
- Power-Aware GateSim Debug
For PAG debug, the following steps may be useful. 1. Get correct netlists from PD which contain powe ...