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.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字 ...
随机推荐
- Linux 开机文件系统发生错误
1 如果/目录没有损毁,那么开机的时候,屏幕会提示:press root password or ctrl +D,这个时候请输入root密码登陆系统,然后进行如下操作: 1)在光标处输入root密码登 ...
- mysql5.7.26做主主配置
一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.在 ...
- netty之IO演进之路
常见IO类型: 传统的同步阻塞I/O编程<BIO> 基于NIO的非阻塞编程 基于NIO2.0的异步非阻塞AIO编程 BIO缺点: 没有数据缓冲区,I/O性能存在问题 没有Channel概念 ...
- 【NOIP2016提高A组模拟10.15】算循环
题目 分析 一步步删掉循环, 首先,原式是\[\sum_{i=1}^n\sum_{j=1}^m\sum_{k=i}^n\sum_{l=j}^m\sum_{p=i}^k\sum_{q=j}^l1\] 删 ...
- jsp三种注释方法
HTML注释(输出注释):指在客户端查看源代码时能看见注释.例如, <!-- this is an html comment.it will show up int the response. ...
- Mapnik连接文件数据、数据库中的vertor数据和raster数据
Mapnik的XML文件,选择其中一个Datasource. <?xml version="1.0" encoding="utf-8"?> < ...
- raster导入postgres Windows命令
cmd命令行 raster2pgsql -s 4326 -I -C -M C:\Users\tt\Downloads\tmean_19_tif\*.tif -F -t 256x256 tmean_19 ...
- VMWare虚拟机启动不了有个叉叉的解决办法
打开VMWare虚拟机提示有: This virtual machine appears to be in use. If this virtual machine is already in use ...
- docker开启远程tcp监听端口
linux 测试成功 cat > /etc/systemd/system/docker.service.d/tcp.conf <<EOF [Service] ExecStart= E ...
- [Usaco2010 Dec]Treasure Chest 藏宝箱
题目链接:点这里 Solution: 刚开始以为是博弈论,然而不是... 首先考虑n方dp,设f(l,r)为只有\(l\)到\(r\)区间的钱的先手最大获利 那么我们可以得到式子f(l,r)=sum( ...