Servlet

1362581-20190904111408243-1145703330.png
虽然目前servlet可能看起来和jsp一样过时,但是很多框架的底层,服务端和客户端通信都是用的这个

servlet

servlet是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。简单的理解就是服务器端,接受客户端过来的数据,通过解析request,返回respond的工具,可以理解为一个有5个方法的接口,一般来说实现了servlet的类都可以叫做servlet。
但是如果一个单独的servlet是不能跟客户端通信的,实际通信的是tomcat,tomcat监听端口(一般是8080),请求过来后,根据url等信息,确定要将请求交给哪个去处理,然后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。
1362581-20190904111526996-1243518936.png

基本实现

servlet是具有5个方法的类,一般都是直接采用继承的方式重写就行,5个方法包括3个周期方法和2个其他方法
1362581-20190904111507715-146896719.png

  • init(ServletConfig config)
  • destroy
  • service
  • getServletInfo
  • getServletConfig

其中对于init 和destroy周期方法只调用一次,而对于service方法,只要请求进来就会调用一次,所以我们的业务逻辑都是写在service方法里面的,查看源码,servlet不会直接实现service方法,需要自己实现get post操作,这样肯定很麻烦,所以大多数操作都是直接继承HttpServlet方法实现其中的service方法,对于HttpServlet类,这是一个抽象类,不允许被实例化,也就就是不能被new,继续查看httpServlet的源码会发现,这个类继承了一个GernericServlet类,这类也是个抽象类,但是这里直接实现了servlet,对于Servlet,没有直接实现其中的service方法。
那么为什么这么麻烦,我们直接实现HttpServlet,并且HttpServlet直接继承Servlet就行了,为什么要隔一层GenericServlet,查看GenericServlet可以看到基本方法都没有什么用,只是周期函数init中,加了两行

public void init(ServletConfig config) throws ServletException{
  this.config=config;
  this.init();
}

这里作用

posted on 2019-09-04 11:16  Fourousky 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/fourous/p/11457866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值