JAVAEE_Servlet_02_Servlet接口实现类HttpServlet
Servlet接口实现类
* Servlet接口: Servlet接口是来自于Servlet规范下的一个接口,存在于HTTP服务器(Tomcat)所提供的jar包中。Servlet-api.jar。
* Servlet-api.jar 该jar包在 Tomcat服务器目录下的lib文件夹下的一个jar包。该jar包中存放了Servlet接口。(javax.servlet.Servlet).
* 在Servlet规范中,规定了Http服务器能调用的【动态资源文件】,必须是一个Servlet接口的实现类。(实现了Servlet接口的类就是一个动态资源文件)
- 例如:
class Student{
//不是一个动态资源文件,没有实现Servlet接口,所以 Servlet无权到调用该类。
}
class Student implements Servlet{
//实现了Servlet接口,属于合法的动态资源文件, Servlet有权调用
Servlet object= new Student();
object.doGet();
}
* Servlet接口实现类开发步骤
- 第一步:创建一个类继承HttpServlet父类,使之成为一个Servlet接口实现类。 oneServlet(HttpServlet实现类)---继承--->HttpServlet(abstract)---继承--->GenericServlet(abstract)---实现---> Servlet接口
- 第二步:重写HttpServlet父类中的两个方法 doGet() 和 doPost()。
- 如果浏览器以---get--> 发送请求给Servlet,那面Servlet就会调用doGet()方法来处理
- 如果浏览器以---post--> 发送请求给Servlet,那面Servlet就会调用doPost()方法来处理
- 第三步:将Servlet接口实现类的信息【注册】到Tomcat服务器中。
-【网站项目】---> web文件夹---> WEB-INF文件夹 ---> web.xml文件 将当前Servlet接口实现类的信息写到该文件中,就相当于完成了【注册】
- 需要在 web.xml 文件中写的内容:
<servlet>
<servlet-name>pathName</servlet-name> <!-- 创建一个变量来存储Servlet类路径 (变量命随意但是要和 <servlet-mapping> 中的<servlet-name> 保持一致)-->
<servlet-class>com.shige.controller.oneServlet</servlet-class> <!-- 声明Servlet接口实现类的类路径:包名+类名 --> Tomcat会声明一个变量 String pathName="com.shige.controller.oneServlet ";
</servlet>
<servlet-mapping> <!-- 由于Servlet接口实现类的路径都比较长(包名+类名),为了更方便访问Servlet接口实现类,所以要给该实现类起一个简单的别名,从而更方便访问-->
<servlet-name>pathName</servlet-name> <!--给Tomcat服务器中虚拟路径名为pathName的路径起别名 -->
<url-pattern>/simple</url-pattern> <!--设置别名,别名必须以 / 开头-->
</servlet-mapping>
- 如果浏览器向Tomcat服务器请求oneServlet实现类时,地址是: http://local:8080/网站名/simple
- 第四步: 将WEB项目部署到Tomcat服务器上,run---->Edit Configurations----->选择Tomcat服务器---->Deplyment 选择要部署的WEB项目----->Application context 定义浏览器访问时的项目名----->ok
* 抽象类的作用:简化接口实现类对接口实现过程中的难度。将接口中不需要实现的抽象方法,交给该抽象父类去完成,这样最后一层继承抽象父类的实现类只需要去实现所需要的方法就可以了。
* 在 Servlet 接口中有五个方法 : init(), getServletConfig(), service(), getServletInfo(), destroy(). 在这五个方法中,目前只需要servic()方法。所以如果直接实现Servlet接口,那么就必须同时重写这五个方法。
* Servlet接口中各方法的使用?
1.无参数构造方法 实例化Servlet实现类对象,创建实例对象。
2.init方法
- 1,2方法执行时间几乎相同,执行次数都是一次,构造方法执行的时候Servlet对象之正在创建,而init方法执行时Servlet方法已经创建,若系统要求在对象创建时刻执行一段特殊程序,这段程序尽量写在init方法中。
- 为什么不建议将代码写在构造方法中呢?
> 因为存在风险,当程序员编写构造方法的时候,可能会导致无参构造方法失效。(因为当一个类中不编写任何构造函数的时候,默认有一个无参数构造方法,但一旦编写一个有参数构造方法的时候,系统则不再提供无参数构造).
> init方法是sun公司为程序员提供的一个初始化时刻,若希望程序在初始化时刻执行一段特殊的程序,该程序可以编写到init方法中,将来会被自动调用。
3.service方法
- service方法是必然要重写的,因为这个方法需要完成业务逻辑处理,请求的处理以及响应。
4.destroy方法
- 这个方法也是为SUN公司为java程序提供的一个特殊时刻,这个特殊时刻被称为对象销毁时刻,若希望在销毁时刻执行一段特殊的代码,需要将该段代码写在destory方法中,自动被程序调用。
5.回顾
1.类加载时刻执行代码写到静态代码块中。
* Service()方法为什么有用:
- service()用来获取浏览器的请求方式,判断浏览器发过来的请求方式的类型。从而决定用哪种方法去处理浏览器的请求。
- Tomcat 根据Servlet规范调用Servlet接口实现类规则:
1. Tomcat有权创建Servlet接口实现类对象 Servlet oneServlet = new oneServlet();
2. Tomcat通过实例对象调用HttpServlet 抽象类中的service方法处理当前请求 oneServlet.service()
3. 因为在HttpServlet父类中已经重写了service方法,在该方法中决定了什么时候调用doGet()方法,什么时候调用doPost()方法。(而这种通过父类决定在何种情况下调用子类方法的作法,在设计模式中称为 模板设计模式)
例如:HttpServlet 中的 service()方法
public void service(){ // HttpServlet service()方法, 在service方法中出现的this,指的是调用service方法的实例对象,哪个实例对象调用service方法,this就指哪个子类
if(浏览器请求方式==Get){
this.doGet(); //oneServlet.service() 此时 this---> oneServlet, 因为子类中重写了doGet()方法,所以son.doGet()调用的是子类中重写的doGet()方法,而不是HttpServlet中的doGet()。
}else if(浏览器请求方式==Post){
this.doPost();
}
}
oneServlet doGet() do Post()
Servlet oneServlet = new oneServlet()
oneServlet.service();
JAVAEE_Servlet_02_Servlet接口实现类HttpServlet的更多相关文章
- servlet接口实现类HttpServlet以及开发中一些细节
1. 但是eclipse不会帮我们改web.xml配置文件,所以我们也要在web.xml文件里面手动改 2. 这个样子的话你在用浏览器访问的时候链接的映射就改成了t_day05,这个主要用于你建立完一 ...
- Servlet API遍程常用接口和类
本文主要总结Servlet API遍程常用接口和类 Servlet API http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html ...
- Servlet基础之一:Servlet基本接口与类
1.概述 Servlet API中共有5个包,约113个接口和类: javax.servlet javax.servlet.http javax.servlet.jsp javax.servlet.a ...
- javaWeb学习总结(3)- Servlet总结(servlet的主要接口、类)
Servlet总结01——servlet的主要接口.类 (一)servlet类 Servlet主要类.接口的结构如下图所示: 要编写一个Servlet需要实现javax.servlet.Servlet ...
- Servlet常用的接口和类
使用接口和类的作用:Servlet也是依靠继承父类和实现接口来实现的.使用Servlet必须要引入两个包:javax.servlet和javax.servlet.http.所有的Servlet应用都是 ...
- Servlet基本用法(二)接口和类
一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletRequest和ServletResponse接口 当客户请求到来时,由容器创建一个ServletRequest对象 ...
- Servlet基本用法二接口和类
转自:http://www.cnblogs.com/xujian2014/p/4536168.html 一.摘要 本文主要简单介绍开发Servlet需要用到的接口和类. 二.ServletReques ...
- JavaWeb学习——Servlet相关的接口和类
JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...
- Myeclipse中打开接口实现类的快捷键
Myeclipse中打开接口实现类的快捷键-----Ctrl + T Myeclipse中 Open Type快捷键-----Ctrl + Shift + T
随机推荐
- 2021-2-25:对于 Java MMAP,如何查看文件映射脏页,如何统计MMAP的内存大小?
我们写一个测试程序: public static void main(String[] args) throws Exception { RandomAccessFile randomAccessFi ...
- MySQL学习笔记(六)
好耶,七天课程的最后一天!我当然还没精通了,,,之后可能是多练习题目然后再学学其他的东西吧.mysql新的知识点也会在后面补充的. 一.杂七杂八补充 1. 当多个函数共用同样的参数时,可以转变成类进行 ...
- 顶级c程序员之路 选学篇-1 深入理解字节,字节序与字节对齐
深入理解字节,字节序与字节对齐 一 总述 作为一个职业的coder玩家,首先应该对计算机的字节有所了解. 我们经常谈到的2进制流,字节(字符)流,数据类型流(针对编程),结构流等说法,2进制流,0和 ...
- # PyComCAD介绍及开发方法
项目地址:https://github.com/JohnYang1210/PycomCAD 1.综述 提到Autocad在工业界的二次开发,VB或者Lisp可能作为常用的传统的编程语言.但是,Py ...
- 如果要是把标记为2的那一行Lable1.Text改为其他的Lable显示执行代码
转: 如果要是把标记为2的那一行Lable1.Text改为其他的Lable显示执行代码 如图,程序很简单,文件路径也没问题,为什么会报错,百思不得其解?[url]https://book.douban ...
- 《PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路》 分享下载
转: <PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路> 分享下载 书籍信息 书名: PYTHON机器学习及实践-从零开始通往KAGGLE竞赛之路 标签: PYTHON机器学 ...
- mysql查询较长的执行进程及创建权限账号
A:对于死锁,进程的操作 1.查找当前活跃事务 SELECT * from information_schema.INNODB_TRX 根据trx_started等判断事务是否异常锁定 2.杀死线程 ...
- Java Swing 自定义Dialog确认对话框
Java Swing 自定义Dialog 需求:当点击JFrame窗口的关闭按钮时,弹框询问是否确定关闭窗口,如果是则关闭程序,否就让弹框消失什么也不做(使用Dialog). 分析:虽然Java提供了 ...
- 推荐一款小众且好用的 Python 爬虫库 - RoboBrowser
1. 前言 大家好,我是安果! 今天推荐一款小众轻量级的爬虫库:RoboBrowser RoboBrowser,Your friendly neighborhood web scraper!由纯 Py ...
- Everything about WSL 1 you want to know
关于 WSL 1 入门,你应该知道这些 如有错误,欢迎指出 参考: WSL 文档 VMware Workstation Pro 文档 概述 通过 WSL 2 来认识 WSL 1 什么是 WSL 2? ...