理解Servlet
在Project Explorer中打开Java Resources: src -> Libraries -> Apache Tomcat 5.5 -> servlet-api.jar文件,可以看到其中包含两个包:javax.servlet和javax.servlet.http, 与Servlet有关的类和接口都位于这两个包里面。
Servlet是一个接口,位于 javax.servlet.Servlet,它规定了每个Servlet所必须实现的方法。 实际应用时我们需要从 javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 两个抽象类 继承出自己的Servlet类,并实现所需的功能。这几个类的关系如下(绿色斜体字为抽象类):
上图中,Servlet依赖于ServletRequest和ServletResponse接口,这两个接口负责为Servlet接受和发送信息。HttpServlet也类似。
Servlet接口
javax.servlet.Servlet接口包含以下的方法:
init()
void init(ServletConfig config) throws ServletException
init方法用于初始化,在Servlet启动时调用。
service()
void service(ServletRequest req, ServiceResponse res) throws ServletException, IOException
Servlet通过这个方法,从req获得客户端请求,处理并生成结果,再通过res发送给客户端。
destroy()
void destroy()
Servlet销毁时执行的方法。
getServletInfo()
String getServletInfo()
将Servlet的信息通过字符串返回。
getServletConfig()
ServletConfig getServletConfig()
获取包含Servlet各种信息的ServletConfig对象。
当某个Servlet第一次被请求时,服务器(Servlet容器)会生成该Servlet并调用它的init()方法, 再调用其service()方法处理请求。处理结束后该Servlet会常驻于容器中,下一个请求则不再 重新生成Servlet,而是直接调用常驻的Servlet对象的service()方法。 服务器停止时,会调用该Servlet的destroy()方法。
因此,在Servlet的一个生命周期中,init()和destroy()仅会被调用一次, 而service()则会被调用多次。
××××××××××××××××××Servlet里面一般存在doGet或者doPost方法不出现Service()方法××××××××××××
其实Servlet中,service方法是一直存在的,因为最高层的接口Servlet(想HttpServlet等具体的servlet都是直接或者间接实现了这个接口)里面就有这个方法,所以不管是怎样的servlet类,都有service方法,没有service就不能称为一个servlet了。
写了一个Servlet(应该是继承HttpServlet吧),重写了service方法,一般来说这个方法是不需要重写的,因为在HttpServlet中已经有了很好的实现,它会根据请求的方式,调用doGet或者doPost方法,所以我们么一般写一个servlet,只需要重写doGet或者doPost就可以了,如果你重写了service方法,那么servlet容器就会把请求交给这个方法来处理,而你又没有在service方法中调用doGet或者doPost,那么当然doGet方法就会不起作用了,我的建议是如果你由于某种需要,需要重写service方法,在末尾最好加上一句super.service(),这样就可以解决问题了。
××××××××××××××××××××××××××××××××××
GenericServlet抽象类
javax.servlet.GenericServlet为我们实现了Servlet接口的大部分方法,除了service()方法之外。 因此,我们在制作自己的Servlet时,只需要继承GenericServlet并重载service()方法即可。
相关推荐
Lesson_jsp内置对象和简单理解servlet
在本文中,我们将深入理解Servlet以及与之相关的`web.xml`配置文件的运行过程。在短短的5分钟内,我们将快速掌握Servlet的基础知识,以便您能够迅速入门。 首先,Servlet是一个Java类,它扩展了服务器的功能,使得...
`servlet-api-src`通常指的是Servlet API的源代码,它是理解Servlet工作原理的关键。 首先,让我们深入了解一下`javax.servlet.Servlet`接口。这个接口定义了两个主要方法:`init()`和`service()`。`init()`方法在...
原生Servlet CRUD是Java Web开发中的基础操作,主要用于创建、读取、更新和删除(Create, ...虽然没有使用现代框架,但这个练习有助于开发者更深入地理解Servlet的工作机制,为后续学习更复杂的Web框架打下坚实基础。
对于开发者来说,查看源码可以帮助理解Servlet的工作原理,进行问题排查,甚至进行定制化开发。通常,Servlet API的源码会包含在像servlet.jar这样的库文件中,开发者可以通过反编译工具查看或下载官方提供的源码包...
开发者可以通过这个文件快速查找和理解Servlet3.0中的类、接口、方法以及它们的使用示例,对于学习和使用Servlet3.0非常有帮助。 总的来说,Servlet3.0通过增强的注解配置、异步处理、过滤器改进、上下文参数和监听...
`servlet-src`通常指的是Servlet的源代码,这对于理解Servlet的工作原理、学习如何编写Servlet以及进行自定义功能扩展非常有用。在这个压缩包中,我们可能会找到`javax`包,这是Java标准库的一部分,包含了Servlet...
根据提供的部分代码,我们可以进一步理解Servlet中的一些基本操作: ```java String tableName = request.getParameter("TableName"); // 获取表名参数 int intTable = Integer.parseInt(tableName); // 将字符串...
3. 理解Servlet的生命周期,模拟Servlet的初始化和销毁过程。 4. 配置Servlet,尝试不同的URL映射,理解其工作原理。 总之,Servlet是Java Web开发的基础,熟练掌握Servlet能够帮助开发者更好地理解和构建动态Web...
为了更好地理解Servlet的生命周期,我们可以通过一个简单的示例来进行说明。下面是一个简单的`LifeCycleServlet`类: ```java public class LifeCycleServlet extends HttpServlet { public void init...
总的来说,深入理解Servlet源码有助于提升我们的Java Web开发技能,使我们能够更高效地解决问题,编写出更健壮、更高效的Web应用程序。通过实践和反编译,我们可以将理论知识转化为实际操作,进一步巩固对Servlet的...
综上所述,"Servlet 心的练习"是一个极好的学习资源,通过实践这些示例,你可以深入理解Servlet的工作方式,提升Web开发技能。在"day02"中,你可能会遇到各种Servlet的使用场景,如请求转发、重定向、会话管理等,...
最后,对于熟练的servlet开发者,此规范可以帮助他们深入理解servlet技术的底层机制。 需要注意的是,此规范并不是servlet开发者的用户指南,而是为开发者提供一个标准化的技术参考。对于那些希望了解更多关于如何...
在"简单的servlet例子新闻网站 全"这个项目中,我们可以深入理解Servlet在实际应用中的工作原理和常见应用场景。 首先,Servlet是一个Java类,遵循Java Servlet API规范,主要负责接收HTTP请求,并生成HTTP响应。在...
Servlet-api.jar是Java Web开发中不可或缺的一个库文件,它包含了Servlet和JSP(JavaServer ...随着技术的不断发展,虽然直接操作Servlet的场景有所减少,但理解Servlet API仍然是每个Java Web开发者必备的基础知识。
Servlet技术是Java EE(Enterprise...了解以上知识点后,你将能够更深入地理解Servlet在Java EE项目中的作用,以及如何在实践中有效地利用它来构建Web应用程序。通过不断实践和学习,你将成为一个熟练的Servlet开发者。
不过,理解Servlet的基础对于理解这些框架的工作原理至关重要。 9. **test-servlet项目** 在提供的`test-servlet`压缩包中,可能包含了一个简单的Servlet示例项目。可能有一个名为`TestServlet.java`的Servlet类,...
在本教程中,我们将深入理解Servlet的基本概念、生命周期、API使用及其工作原理。 首先,Servlet是按照Servlet规范编写的一个Java类,它必须实现`javax.servlet.Servlet`接口。Servlet的主要作用是在服务器上运行,...
这个项目的实践性极强,通过实际操作,可以帮助开发者深入理解Servlet的工作原理以及在实际应用中的运用。 首先,我们需要了解Servlet的基本概念。Servlet是Java Servlet API的核心,它是Java平台上的一个标准接口...