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.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字 ...
随机推荐
- HelloWorld的解析
public class HelloWorld { public static void main(String[] args) { System.out.println("你好,世界!&q ...
- 上传图片,正在加载,loading
https://blog.csdn.net/yansong_8686/article/details/50361573
- SpringMVC POJO传参方式
有两POJO类 Address.java package com.proc; public class Address { private String province; private Strin ...
- oracle partition 分区
--范围分区create table person( id int, name varchar2(20), birth date, sex char(2))partition by range (bi ...
- Shiro(一)
1 权限管理 1.1 什么是权限管理? 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问权限的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自 ...
- vue2.0 监听滚动 锚点定位
vue中监听滚动的方法其实可以用: // Chrome document.body.scrollTop // Firefox document.documentElement.scrollTop // ...
- jq实现表格多行列复制
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>&l ...
- canal 环境搭建 kafka Zookeeper安装(二)
第一步 创建Zookeeper 下载完成后 修改 Zookeeper中的 zoo.cfg 修改 dataDir .dataLogDir 集群模式 server.1=ServerIP:2888:3888 ...
- 关于 ATL 中 CComControl 的构造
分享一篇 C++语言 & ATL 的高阶解读笔记,你需要在C++语言特性中上串下跳,应该算篇有质量的文章. class ATL_NO_VTABLE CHello : // ... public ...
- sh_03_第1个函数
sh_03_第1个函数 # 注意:定义好函数之后,之表示这个函数封装了一段代码而已 # 如果不主动调用函数,函数是不会主动执行的 def say_hello(): print("hello ...