JavaWeb三大组件之Servlet初次见面及生命周期
2015-11-19 12:20
686 查看
Servlet是JavaWeb的三大组件(servlet、listner、filter)之一,它属于动态资源。Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要:
l 接收请求数据;
l 处理请求;
l 完成响应。
例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。
实现Servlet有三种方式:
l 实现javax.servlet.Servlet接口;
l 继承javax.servlet.GenericServlet类;
l 继承javax.servlet.http.HttpServlet类;
生命周期方法:
l void init(ServletConfig):出生之后(1次);
l void service(ServletRequest request,ServletResponse response):每次处理请求时都会被调用;
l void destroy():临死之前(1次);
Servlet接口是Tomcat与外界通过三个方法通信的协议,这几个方法都是由tomcat调用,但是为了我们更好的使用Servlet,Tomcat提供了一个实现了Servlet接口的GeneralServlet,它在init方法中放入了无参数的init钩子方法,我们如果要做初始化只需要复写这个方法即可,GeneralServlet还实现了ServletConfig接口,那么我们就能直接调用ServletConfig接口中的方法获取配置参数。到目前为止,这几个生命方法和参数都是无协议的,直到HttpServlet,它继承与GeneralServlet,更进一步增加了一些协议相关的方法,如doGet、doPost,这个类在service方法中通过判断请求的方式,调用相应的钩子方法,所以我们只需要复写这些方法即可。HttpServletRequest、HttpServletResponse分别是ServletRequest、ServletResponse的子类,提供了协议相关的一些方法,Tomcat在接收到Http请求之后,创建了HttpServletRequest、HttpServletResponse传入service方法,所以在HttpServlet中的service方法中通过强转得到HttpServletRequest、HttpServletResponse。
特性:
l 单例,一个类只有一个对象;当然可能存在多个Servlet类!
l 线程不案例的,所以它的效率是高的!
l 不要在Servlet中创建成员!创建局部变量即可!
l 可以创建无状态成员!
l 可以创建有状态的成员,但状态必须为只读的!
Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。
在Servlet接口中还存在三个我们不熟悉的类型:
l ServletRequest:service() 方法的参数,它表示请求对象,它封装了所有与请求相关的数据,它是由服务器创建的;
l ServletResponse:service()方法的参数,它表示响应对象,在service()方法中完成对客户端的响应需要使用这个对象;
l ServletConfig:init()方法的参数,它表示Servlet配置对象,它对应Servlet的配置信息,那对应web.xml文件中的<servlet>元素。
l 接收请求数据;
l 处理请求;
l 完成响应。
例如客户端发出登录请求,或者输出注册请求,这些请求都应该由Servlet来完成处理!Servlet需要我们自己来编写,每个Servlet必须实现javax.servlet.Servlet接口。
实现Servlet有三种方式:
l 实现javax.servlet.Servlet接口;
l 继承javax.servlet.GenericServlet类;
l 继承javax.servlet.http.HttpServlet类;
生命周期方法:
l void init(ServletConfig):出生之后(1次);
l void service(ServletRequest request,ServletResponse response):每次处理请求时都会被调用;
l void destroy():临死之前(1次);
Servlet接口是Tomcat与外界通过三个方法通信的协议,这几个方法都是由tomcat调用,但是为了我们更好的使用Servlet,Tomcat提供了一个实现了Servlet接口的GeneralServlet,它在init方法中放入了无参数的init钩子方法,我们如果要做初始化只需要复写这个方法即可,GeneralServlet还实现了ServletConfig接口,那么我们就能直接调用ServletConfig接口中的方法获取配置参数。到目前为止,这几个生命方法和参数都是无协议的,直到HttpServlet,它继承与GeneralServlet,更进一步增加了一些协议相关的方法,如doGet、doPost,这个类在service方法中通过判断请求的方式,调用相应的钩子方法,所以我们只需要复写这些方法即可。HttpServletRequest、HttpServletResponse分别是ServletRequest、ServletResponse的子类,提供了协议相关的一些方法,Tomcat在接收到Http请求之后,创建了HttpServletRequest、HttpServletResponse传入service方法,所以在HttpServlet中的service方法中通过强转得到HttpServletRequest、HttpServletResponse。
特性:
l 单例,一个类只有一个对象;当然可能存在多个Servlet类!
l 线程不案例的,所以它的效率是高的!
l 不要在Servlet中创建成员!创建局部变量即可!
l 可以创建无状态成员!
l 可以创建有状态的成员,但状态必须为只读的!
Servlet类由我们来写,但对象由服务器来创建,并且由服务器来调用相应的方法。
在Servlet接口中还存在三个我们不熟悉的类型:
l ServletRequest:service() 方法的参数,它表示请求对象,它封装了所有与请求相关的数据,它是由服务器创建的;
l ServletResponse:service()方法的参数,它表示响应对象,在service()方法中完成对客户端的响应需要使用这个对象;
l ServletConfig:init()方法的参数,它表示Servlet配置对象,它对应Servlet的配置信息,那对应web.xml文件中的<servlet>元素。
相关文章推荐
- Java mail 技术实例
- Java各种排序算法汇总(冒泡,选择,归并,希尔及堆排序等)
- java上传组件FileUpload
- Java
- struts(三) ---OGNL的学习和理解
- Java的七大设计原则
- JavaWeb---文件读取/IO流
- java.lang.OutOfMemoryError异常解决方法
- 关于java中Double类型的运算精度问题
- PhoneGap插件调用Java流程源码分析(二)
- java去除List中重复的元素
- [error handle][java script]如何做到js绑定事件的同时不执行事件
- java中接口的作用是什么?
- Eclipse用法和技巧一:还原视图和编辑器
- Java编程中“为了性能”尽量要做到的一些地方
- Spring Data JPA 开发指南
- JSP学习笔记:Java中HashMap,LinkedHashMap,TreeMap的区别
- spring 多数据源一致性事务方案
- 深入理解java语言的class文件格式(五)
- equals和==的区别