servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。
下面是java官方网站上对servlet的介绍:
java官网对于servlet的解释 写道
Servlets are the Java platform technology of choice for extending and enhancing Web servers. Servlets provide a component-based, platform-independent method for building Web-based applications, without the performance limitations of CGI programs. And unlike proprietary server extension mechanisms (such as the Netscape Server API or Apache modules), servlets are server- and platform-independent. This leaves you free to select a "best of breed" strategy for your servers, platforms, and tools.
Servlets have access to the entire family of Java APIs, including the JDBC API to access enterprise databases. Servlets can also access a library of HTTP-specific calls and receive all the benefits of the mature Java language, including portability, performance, reusability, and crash protection.
Today servlets are a popular choice for building interactive Web applications. Third-party servlet containers are available for Apache Web Server, Microsoft IIS, and others. Servlet containers are usually a component of Web and application servers, such as BEA WebLogic Application Server, IBM WebSphere, Sun Java System Web Server, Sun Java System Application Server, and others.
You might want to check out the latest information on JavaServer Pages (JSP) technology. JSP technology is an extension of the servlet technology created to support authoring of HTML and XML pages. It makes it easier to combine fixed or static template data with dynamic content. Even if you're comfortable writing servlets, there are several compelling reasons to investigate JSP technology as a complement to your existing work.
通过简单的翻译可以读出,servlet是针对cgi而产生的更简单高效的产生动态内容的组件,它可以很轻松的生成动态内容,而且可以通过servlet调用底层的数据库,亦或是其他服务层内容,所以servlet就像是一个显卡的GPU,既可以显示内容又可以运算逻辑,不知道我这么比喻恰不恰当。
而后又产生了JSP,使得servlet显示网页内容的工作得以释放,在JSP中可以更简单的编辑与调整标准Html内容。
servelt=java server+applet
当初sun的意思是将servlet定义为服务端的小程序搭配applet来使用,但applet早早的夭折了。
servlet是一种小型的Java程序,它扩展了Web服务器的功能。作为一种服务器端的应用,当被请求时开始执行。Servlet提供的功能大多与JSP类似,不过实现的方式不同。JSP通常是大多数HTML代码中嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML。
在JSP没有出现之前程序员要在servlet中编写大量例如:
response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">"); out.println("<HTML>"); out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>"); out.println(" <BODY>"); out.print(" This is a servlet!"); out.println(" </BODY>"); out.println("</HTML>"); out.flush(); out.close();
这样的代码,仅仅输出一句话就这么麻烦,那么整个一个网页的内容呢?可想而知是多么可怕的工作量!而且一个项目不仅仅只有一个网页,一个大型项目维护起来是多么的麻烦和恐怖。幸运的是当时的sun也看到了这一点,没多久就发布了JSP1.0,使得程序员在海量的代码中得以解脱,完全可以把网页内容交由美工去做了:)。
Servlet发展至今已经是3.0版本,功能更加强大,支持异步处理,可选择插件支持等等,现在大家用的servlet版本普遍为2.x。
Servlet是j2ee/javaee的javax.servlet包中的一个接口,打开官网的api可以看到里面有很多与servlet相关的接口与抽象类,因为不开源所以我们没办法分析它的源代码,而且javaee是一种标准,实现全靠其他厂商。
Api地址:http://docs.oracle.com/javaee/5/api/
Interfaces
Servlet —servlet编写必须实现的重要接口
ServletConfig —包含servlet相关信息,在servlet初始化是为其传递信息
ServletContext —servlet上下文配置,也就是servlet在web.xml中得相关配置信息
ServletContextAttributeListener —ServletContext属性监听器
ServletContextListener —ServletContext监听器
ServletRequest —为servlet获取request对象的接口
ServletRequestAttributeListener —ServletRequest属性监听器
ServletRequestListener —ServletRequest监听器
ServletResponse —为servlet获取response对象的接口
Classes
GenericServlet —通用servlet实现类
ServletContextAttributeEvent —ServletContextAttribute事件
ServletContextEvent —ServletContext事件
ServletInputStream —servlet中的inputstream
ServletOutputStream —servlet中的outputstream
ServletRequestAttributeEvent —ServletRequestAttribute事件
ServletRequestEvent —ServletRequest事件
ServletRequestWrapper —ServletRequest包装类,实现了ServletRequest的方
ServletResponseWrapper —ServletResponse包装类,实现了ServletResponse的方法
Exceptions
ServletException —servlet相关异常
下面一一介绍跟servlet相关重要的类或者接口:
Servlet接口:这个接口是所有servlet必须实现的,通过读取api的注释可以了解到,想编写一个servlet用户可以去继承GenericServlet 或者 HTTPServlet这两个抽象类,这两个抽象类。
Servlet接口中的方法有:
/** * 获取ServletConfig对象实例 */ public ServletConfig getServletConfig() { return null; } /** * 获取servlet相关信息 */ public String getServletInfo() { return null; } /** * 初始化方法 */ public void init(ServletConfig config) throws ServletException { } /** * servelt中服务方法,相当于我们熟悉的doGet,doPost */ public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { } /** * 默认销毁方法 */ public void destroy() { }
在api中我们可以看见有这样一段话:
2.Any calls from clients to the service method are handled.
3.The servlet is taken out of service, then destroyed with the destroy method, then garbage collected and finalized.
这段话说明的是servlet的生命周期,1.首先servlet被实例化,调用初始化方法。2.从客户端的请求被发送至servlet,调用service方法。3.service执行之后调用销毁方法,整个servlet被销毁。此外除了这些生命周期方法外还可以调用getServletConfig方法,返回类似作者、注释等相关信息。
ServletConfig接口:这个接口比较简单就几个方法,都是用来获取servlet相关参数的。
/** * 获取初始化参数 */ public String getInitParameter(String pars) { return null; } /** * 获取初始化参数名称 */ public Enumeration getInitParameterNames() { return null; } /** * 获取ServletContext实例 */ public ServletContext getServletContext() { return null; } /** * 获取servlet名称 */ public String getServletName() { return null; }
ServletContext接口:这个接口里有很多方法,大多是获取servlet相关配置和参数的,所以我就不介绍了,这也是一个比较重要的接口。
ServletRequest、ServletResponse接口:这两个接口也非常重要,HttpServletRequest与HttpServletResponse就是分别实现了这两个接口,这么说大家就非常熟悉了吧,通过request和response对象可以做很多操作,我就不介绍了。
GenericServlet类:通用的servlet实现类继承了Servlet, ServletConfig这两个接口,实现自己的servlet可以继承这个类,当然是没人会那么做的,因为sun已经为我们做好了现成的实现类HttpServlet。
HttpServlet类:继承了GenericServlet类,实现接口有Servlet, ServletConfig,大家开发都会继承这个类,一般只要实现doGet和doPost方法就行了。这个类还有一些常用的其他方法:
•doPost, 处理post请求的方法
•doPut, 处理put请求的方法
•doDelete, 处理delete请求的方法
•init and destroy, 默认初始化和销毁方法
•getServletInfo, 获取servlet信息
关于put和delete可以自己搜索一下,因为用途比较少,在这我就不解释了。
下面是一个最简单的servlet实例和相关web.xml的配置:
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 类描述:这就是一个最简单的servlet实例了 * * @author ming.li<br/> * <a href="http://g21121.iteye.com">iteye bolg</a> * @time 2012-1-13 上午11:05:45 */ public class TestServlet extends HttpServlet { /** * get请求处理方法 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取name为param的参数值 String param=(String) request.getAttribute("param"); System.out.println(param); } /** * post请求处理方法 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //跳转到index.html这个页面 response.sendRedirect("index.html"); } }
下面是web.xml中的配置:
<!-- servlet配置 --> <servlet> <description>test servlet</description> <display-name>test servlet</display-name> <servlet-name>testServlet</servlet-name> <!-- 这个是servlet的全路径,如果有报名也要写全 --> <servlet-class>TestServlet</servlet-class> </servlet> <!-- servlet上下文配置,注意两个servlet-name要保持一致 --> <servlet-mapping> <servlet-name>testServlet</servlet-name> <!-- 请求这个servlet的地址('/servlet/testServlet'可以自己任意命名),eg:http://path//servlet/testServlet --> <url-pattern>/servlet/testServlet</url-pattern> </servlet-mapping>
相关推荐
《图书管理系统:基于Java与Servlet的应用实践》 在IT领域,构建一个图书管理系统是一项常见的学习与实战项目,它能够帮助我们深入理解Java编程语言以及Web应用开发中的Servlet技术。本项目以“图书管理系统”为...
Servlet是Java EE(企业版)规范的一部分,用于扩展服务器的功能,尤其是与Web应用程序交互。这个实例是为初学者设计的,帮助理解Servlet的基础概念和工作原理。 1. **Servlet生命周期** Servlet的生命周期包括...
在这个简单的MapXtreme for Java与Servlet结合的例子中,我们将探讨如何在Java Web应用中集成地图功能。 首先,MapXtreme for Java提供了丰富的API,允许开发者创建、管理和显示地图。它支持多种数据格式,如...
Java Servlet API是Java Web开发中的核心组件,它定义了服务器端如何处理HTTP请求以及与客户端进行交互的标准。这个"java.servlet.jar"文件包含了Servlet API的所有类和接口,开发者可以使用这些组件来构建动态Web...
在这个"java_servlet_project"中,我们可以深入探讨Java Servlet的核心概念、开发流程以及如何与数据库交互。 1. **Java Servlet基础** Java Servlet是Java EE平台的一部分,它提供了一种服务器端编程模型,用于...
在本项目中,"java+servlet"的组合用于构建一个基础的Web应用程序,实现了常见的CRUD(创建、读取、更新、删除)操作,并具备登录、模糊查询和分页功能。这个项目对于初学者来说是一个很好的实践平台,因为它涵盖了...
Java项目管理系统(java+Servlet的代码).zipJava项目管理系统(java+Servlet的代码).zipJava项目管理系统(java+Servlet的代码).zipJava项目管理系统(java+Servlet的代码).zipJava项目管理系统(java+Servlet的代码).zip...
java与servlet的API的查询以及.class文件反编译成.java文件
Servlet是一个Java类,它扩展了服务器的功能,允许程序员通过HTTP协议与客户端交互。在这个"java的Servlet测试demo"中,我们将深入理解Servlet的工作原理以及如何在集成开发环境(IDE)IntelliJ IDEA中进行开发和...
【Java + Servlet + Ajax 程序详解】 Java、Servlet 和 Ajax 是构建动态网站的关键技术,它们共同为用户提供了交互性和实时更新的能力。本指南将深入解析这些技术,并结合实际应用,帮助您理解和掌握如何利用它们来...
"java web Servlet" Java Web Servlet 是一种基于 Java 语言的服务器小应用程序,主要用于处理客户端请求的响应处理。Servlet 是一个独立的平台,具有良好的性能和多线程运行能力。 Servlet 的主要特点是: * ...
支持servlet的jar包。应该叫servlet-api.jar 你如果编写过servlet就知道要用到HttpServletRequest和HttpServletResponse等对象,这些对象都是要靠这个jar包才能使用的。 如果你安装了Tomcat,这个jar包一般在tomcat...
### Java Servlet 及其特性 #### 1.1 Java Servlet 的定义及特点 Servlet 技术作为 Java 平台的一项关键技术,在 Web 开发领域占据着举足轻重的地位。Servlet 是一种服务器端的小程序,主要负责接收来自客户端的...
- JSP(JavaServer Pages)是动态生成HTML的另一种方式,与Servlet结合使用,实现MVC(Model-View-Controller)架构。 - JSP可以包含Java脚本元素,如脚本片段、表达式、指令,也可以使用EL(Expression Language...
9. **JSP和EL**:虽然JSP(JavaServer Pages)不是Servlet API的一部分,但它们通常与Servlet一起使用,提供视图层的功能。EL(Expression Language)是JSP 2.0引入的,用于简化页面表达式。 10. **部署描述符**:`...
Servlet与JSP一起工作,JSP负责展示视图,而Servlet处理模型和控制逻辑。通过Servlet,我们可以实现用户认证、会话管理、数据库交互等功能。 4. **JavaScript** JavaScript是客户端脚本语言,它在用户的浏览器上...
总结,Java Servlet是构建web应用程序的强大工具,与JSP结合使用可以实现灵活且高效的后端逻辑。学习和熟练掌握Servlet,是成为Java EE开发者的关键步骤。通过不断的实践和项目经验积累,你将在web开发领域更加...
Java项目_购物网站系统(java+Servlet+JSP+Mysql)Java项目_购物网站系统(java+Servlet+JSP+Mysql)Java项目_购物网站系统(java+Servlet+JSP+Mysql)Java项目_购物网站系统(java+Servlet+JSP+Mysql)Java项目_...
Servlet API提供了与Web服务器交互的接口和类,允许开发者创建动态、交互式的Web服务。 在"Java Java Servlet小程序"中,我们可能正在讨论如何构建一个简单的Servlet应用程序。Servlet生命周期包括初始化、服务、...
在"java-servlet物流管理-成功.zip"这个压缩包中,我们可以推测它包含了实现一个物流管理系统的相关代码和资源。下面将详细探讨Java Servlet在物流管理中的应用及其相关知识点。 1. **Java Servlet基础** Java ...