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.全自动 # 优势:不需要你手动创建第三张表 # 不足:由于第三张表不是你手动创建的,也就意味着第三张表字 ...
随机推荐
- nginx的代理服务
nginx的代理服务 正向代理和反向代理 正向代理服务器就是用来让局域网的客户端接入外网访问外网资源,反向代理就是让外网的客户端接入局域网中的站点以访问点中的资源 正向代理 我是一个用户,我访问不了某 ...
- adb shell命令模拟按键/输入input使用keycode 列表详解
在adb shell里有一个非常使用的命令,模拟按键输入,这里首先不要理解为是键盘的模拟按键,下面命令的使用和键值做一个详解. input命令格式 adb shell input keyevent & ...
- faiss的简单使用
简介 faiss是为稠密向量提供高效相似度搜索和聚类的框架.由Facebook AI Research研发. 具有以下特性. 1.提供多种检索方法 2.速度快 3.可存在内存和磁盘中 4.C++实现, ...
- zabbix服务的布置(脚本)
一,服务端配置 #!/bin/bash#clsn #设置解析 注意:网络条件较好时,可以不用自建yum源# echo '10.0.0.1 mirrors.aliyuncs.com mirrors.al ...
- git每次更新都需要输入账号密码,如何解决?
//如果https请求pull每次都需要输入账号密码,则 git config --global credential.helper store 那么,在下一次更新,需要输入账号密码,然后git就 ...
- event loop 与 vue
结论 对于event loop 可以抽象成一段简单的代码表示 for (macroTask of macroTaskQueue) { // 1. Handle current MACRO-TASK h ...
- rsyncd.conf配置文件
rsyncd.conf配置文件 #Rsync server#created by oldboy 15:01 2009-6-5##rsyncd.conf start##uid = rootgid ...
- javaIO--数据流之IO流与字节流
0.IO流 0.1.IO(Input Output)流的概念 Java中将不同设备之间的数据传输抽象为“流”:Stream设备指的是:磁盘上的文件,网络连接,另一个主机等等 按流向分:输入流,输出流: ...
- springboot 配置quart多数据源
Springboot版本为2.1.6 多数据源配置使用druid进行配置,数据库使用的为Oracle11g,如果使用的是MySQL,直接将数据库的地址和驱动改一下即可 <parent> & ...
- mysql8.0.16二进制安装
mysql8.0.16二进制安装 环境简介操作系统:Centos 6.10 64位 目前版本:8.0.16 MySQL Community Server 二进制 安装目录:/data/mysql/my ...