学习理解实现Servlet的三种方式
来源:互联网 发布:kafka java获取offset 编辑:程序博客网 时间:2024/05/22 02:22
在讨论servlet的三种实现方式之前,应该先了解一下servlet的生命周期。
第一步:装载servlet,由容器完成。
第二步:创建一个servlet实例。
第三步:调用servlet的init()方法,该方法只会在第一次访问servlet时被调用一次。
第四步:调用servlet的service()方法,一般业务逻辑在这里处理, 该方法在访问该servlet时,会被调用。
第五步:调用servlet方法,销毁servlet实例。
实现Servlet的三种方式
(以下代码来源于http://blog.csdn.net/zhiaini06/article/details/52729604,在此只是借代码分析学习不用做任何商业用途。侵权可删!)
1 实现Servlet
接口,然后实现接口中的五个方法,代码为:
public class Hello implements Servlet{ //该函数用于初始化servlet,类似于类的构造函数,该函数只会被调用一次 public void init(ServletConfig parm1) throws ServletException { System.out.println("init it!"); } public ServletConfig getServletConfig() { // TODO: Add your code here return null; } //这个函数用于处理业务逻辑 //当用户每访问servlet时,都会调用 //req:用于获得客户端(浏览器)信息 //res:用于向客户端(浏览器)返回信息 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { //从res中得到PrintWriter System.out.println("Service it"); PrintWriter pw = res.getWriter(); pw.println("Hello world!"); } public String getServletInfo() { return ""; } //销毁,释放内存,三种方式会触发destroy //1. reload该servlet(webApps) 2. 关闭tomcat 3.关机 public void destroy() { System.out.println("destroy it!"); }}
查看servletAPI文档对于servlet的初始化是这样描述的:Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
init()方法获得了一个Servlet配置对象(ServletConfig)。这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。这个对象使得Servlet能够访问ServletContext对象。
Servlet接口
servlet的初始化是通过servlet的init()方法实现的。
这个接口定义了一个Servlet:一个在Web服务器上继承了这个功能的Java类。
方法
public void init(ServletConfig config) throws ServletException;
Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。在调用service方法之前,init方法必须成功退出。
如果init方法抛出一个ServletException,你不能将这个Servlet置入服务中,如果init方法在超时范围内没完成,我们也可以假定这个Servlet是不具备功能的,也不能置入服务中。
ServletConfig接口
这个接口定义了一个对象,通过这个对象,Servlet引擎配置一个Servlet并且允许Servlet获得一个有关它的ServletContext接口的说明。每一个ServletConfig对象对应着一个唯一的Servlet。
2 继承GenericServlet
,只需要实现一个方法:service
public class HelloGen extends GenericServlet{ //重写一个方法service即可 public void service(ServletRequest req, ServletResponse res){ //返回Hello world, generic try{ PrintWriter pw = res.getWriter(); pw.println("Hello generic"); } catch(Exception e){ e.printStackTrace(); } }}
public abstract void service(ServletRequest request, ServletResponse
response) throws ServletException, IOException;
这是一个抽象的方法,当你扩展这个类时,为了执行网络请求,你必须执行它。
3 继承HttpServlet
,复写doGet
和doPost方法
public class HelloHttp extends HttpServlet{ //处理get请求 public void doGet(HttpServletRequest req, HttpServletResponse res){ //业务逻辑 try{ PrintWriter pw = res.getWriter(); pw.println("hello, Http"); } catch (Exception e){ e.printStackTrace(); } } public void doPost(HttpServletRequest req, HttpServletResponse res){ this.doGet(req,res); }}
不论用户请求类型是get还是post,服务器处理过程完全相同,那么可只在doPost中编写处理过程,在doGet中调用doPost就行了,反之也可以doGet中处理,doPost中调用doGet。表单提交数据get请求和post请求的区别: 1.从安全性看get<post。get提交的数据会在浏览器的地址栏显示 2.从提交的内容大小看get<post。get提交的数据不能大于2K,而post提交的数据理论上不受限制,但是实际编程中建议不要大于64K 3.从请求响应速度看get>post。get请求服务器立即处理请求,而post请求可能形成一个队列请求
- 学习理解实现Servlet的三种方式
- 实现Servlet的三种方式
- servlet的三种实现方式
- Java Servlet实现的三种方式
- Servlet的三种实现方式
- 【2015/4/18】servlet学习笔记3--实现servlet的三种方式
- Servlet教程 (二) 实现Servlet的三种方式
- Servlet三种实现方式
- Servlet-三种实现方式
- 详细理解servlet实现的几种方式和生命周期
- Servlet的三种创建方式-----------实现javax.servlet.Servlet接口
- Servlet的生命周期和三种实现方式
- 实现Servlet的方式二、三
- 学习笔记(3)-----servlet的三种开发方式
- 韩顺平servlet学习笔记01-创建servlet的三种方式
- Servlet的三种实现
- 创建Servlet的三种方式
- servlet的三种跳转方式
- Android之EditText禁止回车键换行
- Java For-each 和 Iterator异同点总结
- ubuntu在桌面添加应用的快捷方式
- Javascript定义基础类
- 常用的字符转换类
- 学习理解实现Servlet的三种方式
- 【caffe学习笔记】caffe训练日志输出
- 如何从esclipe中快速找到web项目的所需文件
- java web 面试一般 问题总结
- 文章标题
- 定位IO瓶颈的一些方法(iotop工具具体查看IO负载主要是落在哪个进程上)
- red5流媒体服务器
- java排序算法(4)—冒泡排序
- iOS简单验证中文名的有效性