博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一起学习java
阅读量:4953 次
发布时间:2019-06-12

本文共 2102 字,大约阅读时间需要 7 分钟。

一、Servlet学习

     下面是Servlet一个整体的继承结构

     

   首先说一下Servlet这个接口这个主要包含的有init,service,destroy等方法,这里主要介绍这3个方法,这3个方法也就是我们经常说的Servlet生命周期,先介绍init(ServletConfig config)这个方法,在Servlet生命周期中init这个方法只执行一次,它是在服务器装入Servlet时执行的,负责初始化Servlet对象,当然如果你要初始化一些Servlet,可以通过配置<load-on-startup></load-on-startup>来初始化加载Servlet,比如说我们要做个统计多少人次登录过这个网站的时候,第一次访问需要读取之前登陆人数。接下来就是service()这个方法,这个方法是Servlet的核心方法,主要用来处理客户端请求响应,每当客户端每次发送请求就需要调用Service()方法。最后就是destroy()方法,这个方法仅执行一次,在服务器端停止且卸载Servlet时执行该方法。再稍微提一下这个方法ServletConfig getServletConfig()获取当前servlet的配置对象。Servlet这个接口基本说到这里。

   GenericServlet我们来说一下这个抽象类,这个抽象类主要实现了Servlet,ServletConfig,Serializable这3个接口,还有一个不带参数的init方法和两个参数不同的log方法。Serializable这个主要是序列化,也就是说可以被写到磁盘或者通过网络传输。Servlet这个接口和上面基本一样不在做过多介绍。ServletConfig说一下这个接口,这个接口里面主要有getServletName,getServletContext,getInitParameter,getInitParameterNames,这里说一下getServletContext这个方法返回了ServletContext我们请求的上下文,这个也是我们比较主要的对象,功能主要包括一些获取文件类型,文件在服务器上的位置,获得全局初始化参数等吧;getServletName这个也很明确返回Servlet的名字,getInitParameter和getInitParameterNames主要是为了加载初始化参数的,这个类基本就说到这里喽。

 HttpServlet重点喽,这个类主要是对GenericServlet扩展,提供了一个处理HTTP协议的框架,HTTP的请求方式包括DELETE,GET,OPTIONS,POST,PUT和TRACE,在HttpServlet类中分别提供了相应的方法,它们是,doDelete(),doGet(),doOptions(),doPost(), doPut()和doTrace(). 这几个类都没有具体实现都是返回了一个错误信息,所以这就是很明确当我们想使用其中的某一个方法的时候必须对该类型的方法进行重写。说完上面几个重要的对象,还必须说一下service这个方法,这个里定义了2个service的方法,一个是实现类型的转化将ServletRequest与ServletResponse转换为HttpServletRequest与HttpServletResponse,这个方法其实也是对servlet接口方法的一个实现,另外一个方法就是自身类的service方法,这个方法首先获取请求的方法,然后在分别对不同的do***的方法进行实现。以上对整个Servlet的继承结构说的也差不多,由于刚刚开始其中有错误希望大神指出,小弟一定虚心改正,谢谢!!

二、一个请求的流程简单说一下

 1).客户端发送Http请求到服务器;

 2).服务器交由Servlet容器处理;

 3).Servlet容器创建ServletRequest对象,将Http的请求头封装到该协议中;

 4).Servlet容器创建ServletResponse对象;

 5).Servlet容器调用service的方法,把HttpServletRequest和HttpServletResponse对象作为service方法的参数传给HttpServlet对象,这里也就是HttpServlet内部包含的2个service方法;

 6).HttpServlet调用HttpServletRequest的方法,获取Http请求信息;

 7).HttpServlet调用HttpServletResponse的有关方法,生成响应信息(主要包括像响应头,响应体,响应行);

 8).最终交由Servlet容器将HttpServlet的响应结果交给客户端。

三、结束语

 以上如果存在什么错误欢迎大神帮忙指出一下,小弟在此感谢!!另外小弟刚刚搞一个Java群438836709欢迎各种喜欢学习的人进来交流~一起畅谈人生~一起开心的学习~Go!!

 

转载于:https://www.cnblogs.com/wtzbk/p/6942455.html

你可能感兴趣的文章
混沌分形之迭代函数系统(IFS)
查看>>
VS2013试用期结束后如何激活
查看>>
边框圆角Css
查看>>
SQL 能做什么?
查看>>
java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
查看>>
使用Busybox制作根文件系统
查看>>
Ubuntu候选栏乱码
查看>>
基于SSH框架的在线考勤系统开发的质量属性
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>
delphi之模糊找图
查看>>
莫比乌斯反演部分习题
查看>>
小试牛刀——python接口测试小框架
查看>>
BootStrap 模态框禁用空白处点击关闭
查看>>
在Filter中使用动态代理解决请求中文乱码问题
查看>>
windows的网上邻居
查看>>
C# 复制指定节点的所有子孙节点到新建的节点下
查看>>
Leetcode: Search Insert Position
查看>>
如何打开jsp页面时经过action从数据库取得数据显示在页面上
查看>>
js31---观察者模式
查看>>
vue2.0-elementUI
查看>>