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.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字 ...
随机推荐
- Zabbix监控Dell服务器相关硬件资源
一.安装dell服务器硬件监控工具OMSA 1.安装dell的yum源 [root@push-- ~]# wget -q -O - http://linux.dell.com/repo/hardwar ...
- Python核心技术与实战——十二|Python的比较与拷贝
我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = b = a == b 或者是将一个对象进行拷贝 l1 = [,,,,] l2 = l1 l3 = list(l1) 那么现在试 ...
- 深入理解JAVA虚拟机 虚拟机执行子系统
class类文件的结构 java的class类文件中存在两种结构:无符号数和表.最小的存储单元是8个字节. 无符号数是基本的数据类型,用来描述数字,UTF-8编码的字符串,索引引用. 表示多个无符号数 ...
- 【视频点播最佳实践】使用OSS SDK上传视频到点播
摘要: 场景 点播上传SDK缺乏需要的语言版本(如C/C++.Go等)或相应的功能(如网络流上传.追加上传),可以直接使用OSS的SDK进行上传. 准备工作 确认已开通点播服务并完成了相关配置.确认已 ...
- 记录手机端h5页面碰到的一些问题
关于input光标在手机端偏移 问题根本:不要使用line-height垂直居中. 解决方法:可直接定义height,然后高度由上下padding值撑开. 移动端清除input光标 ios input ...
- python主流框架简介和Django框架的使用
目录 一.手撸简易web框架 二.动静态网页 1. 静态网页 2. 动态网页 三.jinja2模板语法 1. jinja2的作用 四.python主流web框架 1. django 3. tornad ...
- WinServer2008R2远程桌面长时间保持连接
开始------运行------gpedit.msc 计算机配置------管理模板-----Windows组件-----远程桌面服务------远程桌面会话主机------会话时间限制 修改两项设置 ...
- weblogic 10c and 12c 打补丁
https://pan.baidu.com/s/17IaK1SYwHxwt-CRb0zDqXw
- python实现的ocr接口
太累了,,有时间再补解释 import pytesseract import requests from PIL import Image from PIL import ImageFilter fr ...
- EF另一个 SqlParameterCollection 中已包含 SqlParameter。
代码: SqlParameter[] commandParameters = new SqlParameter[]{ new SqlParameter("@CultID",filt ...