Servlet基础

1>Servlet规范

1、Servlet规范来自于JAVAEE规范中的一种
2、作用:
     ~~~~      1) 在Servlet规范中,指定《动态资源文件》开发步骤。
     ~~~~      2) 在Servlet规范中,指定Http服务器调用动态资源文件规则。
     ~~~~      3) 在Servlet规范中,指定Http服务器管理动态资源文件实例对象规则。

宏观地说,Servlet是连接Web服务器与服务器Java程序的协议,是一种通信规范。这个规范是以一套接口的形式体现的。
在这里插入图片描述

  • 通常来说,Servlet是宏观上Servlet规范中的一个具体的接口,Servlet规范中包含一套接口。而Servlet接口仅仅是其中之一。
  • 微观地说,Servlet是Servlet接口实现类的一个实例对象,是运行在服务器上的一段Java小程序,即Server Applet,也就是Servlet这个单词的来历。Servlet的主要功能是根据客户端提交的请求,调用服务器端相关Java代码,完成对请求的处理与运算。
    在这里插入图片描述

2>Servlet接口实现类

  • 1、Servlet接口来自于Servlet规范下一个接口,这个接口存在Http服务器提供jar包
  • 2、Tomcat服务器下lib文件有一个servlet-api.jar包存放在Servlet接口(javax.servlet.ServletJIEKOU1)
  • 3、Servlet规范中任务,Http服务器能调用的<动态资源文件>必须是一个Servlet接口实现类。

例子:

class student{
	//不是动态资源文件,Tomcat无权调用
}
class Teacher implements Servlet{
	//合法动态资源文件,Tomcat有权调用

	Servlet obj = new Teacher();
	obj.doGet(); 
}

3>Tomcat根据Servlet规范调用Servlet接口实现类规则

1、Tomcat有权创建Servlet接口实现类实例对象

Servlet oneServlet = new OneServlet();

2、Tomcat根据实例对象调用service()方法处理当前请求

oneServlet.service();

4> Servlet接口抽象类开发步骤

1、创建一个Java类继承于HttpServlet父类,使之成为一个Servlet接口实现类。

	public class OneServlet extends HttpServlet{...}

2、重写HttpServlet父类两个方法。doGet或者doPost方法。
在这里插入图片描述
3、将Servlet接口实现类信息注册到Tomcat服务器。

				get 
浏览器--------》oneServlet.doGet();
				post
浏览器--------》oneServlet.doPost();

4.1、为什么继承了HttpServlet类就成为了Servlet实现类?

鼠标中键点击HttpServlet进入观看源码
在这里插入图片描述
再继续看GenericServlet的源码

发现爷类实现了Servlet。
子类—》父类—》A接口
此时子类也是A接口的实现类。

4.2、为什么不直接实现Servlet接口?

简化开发的难度,降低实现接口的难度。
抽象类的作用:降低接口实现类对接口实现过程难度,将接口中不需要使用抽象方法交给抽象类进行完成,这样接口实现类只需要对接口需要方法进行重写。
在这里插入图片描述
如果要实现Servlet接口,需要重写如上五个方法,而实际上,我们只需要service()这个方法。
servlet接口:init、getServletConfig、getServletInfo、destroy------四个方法对于Servlet接口实现类没用。

4.3、为什么要复写doGet、doPost方法?

1、浏览器有七种请求方式,所以实际上可以复写的有七个方法,但目前仅考虑doGet和doPost方法。
2、Tomcat可以调用实例对象的service()方法,而这个service()方法继承自HttpServlet抽象类中,而在HttpServlet类中service()方法需要使用到doGet()与doPost方法。
3、通过父类决定在何种情况下调动子类中方法在设计模式中叫做模板设计模式

4.4、如何注册?

在WEB-INF中的web.xml文件中 如下输入

	<!-->servlet接口实现类路径地址交给Tomcat-->
   <servlet>
        <servlet-name>mm</servlet-name>
        <servlet-class>com.bjpowernode.controller.OneServlet</servlet-class>
    </servlet>
    <!--为servlet接口实现类提供简短别名-->
    <servlet-mapping>
        <servlet-name>mm</servlet-name>
        <url-pattern>/some</url-pattern>
    </servlet-mapping>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值