`
xiaomogui
  • 浏览: 242688 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jsp基础之Servlet

    博客分类:
  • jsp
阅读更多

     Servlet是一个接口,但是接口中是没有具体实现。
     HttpServlet是Servlet的一个具体实现。要创建一个 HTTP Servlet,要继承 HttpServlet 类,该类是用专门的方法来处理 HTML 表单的GenericServlet 的一个子类。

     Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。Servlet容器会自动使用线程池等技术来支持系统的运行。如果servlet配置多个servlet-mapping,且servlet-name名字相同,则生成多个servlet。

    

    要创建一个servlet,我们须要实现这个接口的5种方法

public class Hello {
        public void destroy(){....} 
        public ServletConfig getServletConfig(){....} 
        public String getServletInfo(){....} 
        public void init(ServletConfig sc)throws ServletException{....} 
        public void service(ServletRequest req,ServletResponse resp)throws                  SevletException,IOException   {....}
}

       GenericServlet类,实现了除service方法以外的其他4种方法。我们创建servlet时只需要继承他,再加上实现一个service()方法就可以了 。
public class Hello extends GenericServlet {
         public void service(ServletRequest greq,ServletResponse gresp)throws....{....}
}

 

      ServletRequest 和ServletResponse 是由容器生产商(tomcat或weblogic等等)按照ServletRequest接口的定义,在容器中自动实例化生成的一个请求对象。这个对象能用该接口定义的15个方法进行操作。当然不同的生产商,实例化出来的对象都会有所不同,只不过我们不关心不同的那些部分,只关心共同的这15个操作方法(他还有什么别的方法我也不管)。

      这个servlet要实现什么功能,就都写在这个service里了。这样做的最大好处是,可以编写不限于HTTP的其他应用,比如FTP,MAIL等等。

     在GenericServlet类之下,有一个HttpServlet类。

     我们大多数时候,只需要继承HttpServlet类就行了。当然这时候我们要写的代码就是

public class Hello extends HttpServlet {
        public void service(HttpServletRequest req,HttpServletResponse resp)throws ....{....}
}

 

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

	private int g_count = 0;
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doGet(req, resp);
		g_count ++;
		System.out.println(" doGet====="+ g_count);
	}

	@Override
	protected void doPut(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.doPut(req, resp);
	}

	/**
	 *  每次请求都执行
	 */
	@Override
	protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		super.service(arg0, arg1);
		int t_count=0;
		g_count ++;
		System.out.println(" service_g_count====="+ g_count);
		System.out.println(" service_t_count====="+ t_count);
	}

	/**
	 *  destroy 方法并不是销毁一个servlet,而是容器在销毁一个servlet之前,
	 *  运行程序员执行一些操作,比如关闭数据库连接...
	 *  
	 */
	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		super.destroy();
	}

	/**
	 *  init方法在第一个httpServlet请求的时候初始化,
	 *  第二个httpServlet请求的时候不执行这个方法
	 */
	@Override
	public void init() throws ServletException {
		// TODO Auto-generated method stub
		super.init();
		g_count ++;
		System.out.println(" init====="+ g_count);
	}

}

     对于第一次请求g_count加上3。init,service,do**()。

     对于第二次及其以后的请求每次加2,   service,do**()。

     如:当第一次打开浏览器A输出: init=====1

                                                service_g_count=====2

                                                service_t_count=====0

                                                doGet=====3

 

            A当刷新一次浏览器输出:

                                                service_g_count=====4

                                                service_t_count=====0

                                                doGet=====5

            

             当关闭当前浏览器A,重新打开一个浏览器B:

                                                service_g_count=====6

                                                service_t_count=====0

                                                doGet=====7

            重启tomcat以后,刷新浏览器B:

                                               init=====1

                                                service_g_count=====2

                                                service_t_count=====0

                                                doGet=====3

     注意:当关闭当前浏览器,重新打开一个浏览器 原因是tomcat默认情况下是缓存客户端的session,这个是可以设置的,不同的tomcat版本可能不同,我用的是tocat5.0测试的。

     当第一个客户请求到达时,Web容器会根据配置文件(web.xml)找到相应的Servlet类,进行实例化。Servlet的执行过程也就是Servlet的生命周期:

一、初始化时期

  该时期调用了init()方法,当Servlet被Servlet引擎载入后,接下来就会执行init()这个方法,因此我们可以重载这个方法以做一些我们自己的初始化的工作。但不要忘记,自己的init()结束后,要记得呼叫super.init()以完成系统的初始化。

  在Servlet的生命期中,init()方法只被执行一次,init()方法仅在服务器实例化Servlet时被执行,此后无论有多少客户机访问这个Servlet,init()都不会被重复执行。

  当init()抛出异常或在规定的一个时间周期内没有返回值时,init()失败,Servlet将无法被服务器装入。

  重载init()方法的基本格式是:

public   void   init(ServletConfig   config)   throws   ServletException   {...}
 

二、执行时期

  在Servlet被载入后,主要通过service()方法对外响应,该方法可以被同时、多次地呼叫。

  由于HttpServlet类有它自己的service()方法,所以对于HttpServlet类而言,它所使用的是自己的service()方法,我们一般所指的service()方法也是指HttpServlet类中的service()方法,当它接收到一个OPTIONS请求时,它会调用doOption()方法,同样,当它接收到一个TRACE请求时,它会调用doTrace()方法。service()方法一般不被重载。通过doOption()方法会决定相应地调用doGet()、doPost()、doPut()、doDelete()这些方法的一种或几种。doOption()方法和doTrace()方法通常也不被重载。

 

三、结束时期

  当服务器卸载一个Servlet时,它将调用destroy()方法。这个方法给Servlet一个时机清除控制的任何资源(比如内存、文件句柄、线程)。如果你需要在结束时,关闭一些资源,你也可以重载这个方法,同样的,自己的destroy()结束后,要记得呼叫super.destroy()。

 

分享到:
评论

相关推荐

    jsp,servlet基础

    jsp 与servlet基础 1:jsp概述 2:jsp基础 3:jsp隐含对象 4:jsp中使用数据库 5:jsp与javabean ...

    jsp/servlet基础课件

    **学习JSP和Servlet基础,你需要理解它们的基本概念、生命周期、API使用以及如何协作处理Web请求。此外,熟悉EL和JSTL,以及如何在实际项目中应用MVC模式,对于提升开发效率和代码质量至关重要。本课件将逐步引导你...

    Head First Servlet & JSP

    《Head First Servlet & JSP》是一本非常受欢迎的IT教程,专为准备SCWCD(Sun Certified Web Component Developer...通过阅读这本书,你可以熟练掌握Servlet和JSP的核心技术,为构建复杂的企业级Web应用打下坚实基础。

    JSP与Servlet实验报告

    【JSP与Servlet技术实验报告】的实验主要围绕图书馆管理系统展开,该系统涵盖了登录、注册、图书管理和用户信息管理等多个核心功能。以下是系统的详细解析: 1. **系统概述** 图书馆管理系统是一个多用户平台,它...

    JSP和Servlet基础知识点

    ### JSP基础 **1. JSP概述:** JSP是一种服务器端脚本语言,它允许开发人员将HTML、XML或者其他标记语言与Java代码结合起来,用于创建动态网页。JSP文件在服务器上被编译成Servlet,然后由服务器执行并返回结果到...

    jsp&servlet电子书

    总之,《jsp&servlet电子书》是学习JSP和Servlet的理想教材,无论你是初学者还是有一定基础的开发者,都能从中获益匪浅。通过阅读这本书,你将能够熟练地运用这两种技术构建高效的Web应用程序,解决实际开发中的各种...

    jsp 购物车源码 servlet

    本资源是针对初学者设计的一个基于JSP(JavaServer Pages)和Servlet的简单购物车源码,旨在帮助学习者深入理解这两种技术在实际Web开发中的应用。JSP和Servlet是Java Web开发中不可或缺的组件,它们共同构建了动态...

    旅游管理系统 jsp+servlet.zip

    【旅游管理系统 jsp+servlet.zip】是一个基于Java Web...总的来说,"旅游管理系统 jsp+servlet.zip"是一个全面的Java Web学习资源,涵盖了从基础到进阶的多个知识点,对于想要提升Web开发技能的开发者来说非常有价值。

    jsp+servlet实现通讯录

    1. **JSP基础**:JSP是一种动态网页技术,允许开发者在HTML页面中嵌入Java代码,以实现动态内容的生成。在“jsp+servlet实现通讯录”项目中,JSP主要用于展示用户界面,包括输入表单、查询结果等。 2. **Servlet...

    JSP-Servlet.rar_jsp_jsp综述_servlet_servlet jsp

    在Java Web开发中,JSP(JavaServer Pages)和Servlet是两种重要的技术,它们共同构建了动态网页应用程序的基础。本文将深入探讨JSP与Servlet的重定向技术,并结合提供的资源来帮助初学者理解和掌握这一核心概念。 ...

    jsp+servlet实现简单的登录注册

    【标题】"jsp+servlet实现简单的登录注册"是关于Web开发的一个基础教程,主要涉及到Java服务器页面(JSP)和Servlet技术的结合使用,用于构建用户登录和注册功能。在这个项目中,开发者会学习如何利用这两者来处理...

    《JSP+Servlet+Tomcat应用开发从零开始学》PDF

    《JSP+Servlet+Tomcat应用开发从零开始学》这本书是针对初学者设计的一本教程,旨在帮助读者从零基础开始学习如何使用JavaServer Pages(JSP)、Servlet和Apache Tomcat服务器进行Web应用程序的开发。JSP、Servlet和...

    jsp+servlet+javabeans示例

    在IT行业中,`JSP(JavaServer Pages)`、`Servlet`和`JavaBeans`是构建Web应用程序的经典技术栈,尤其适用于MVC(Model-View-Controller)设计模式。本示例项目“jsp+servlet+javabeans”旨在演示如何有效地结合这...

    web基础JDBC+Servlet+jsp

    本教程以"web基础JDBC+Servlet+jsp"为主题,旨在帮助初学者掌握这三个核心概念,实现完整的CRUD(创建、读取、更新、删除)操作。下面将详细介绍这三个技术及其在Web开发中的应用。 **JDBC(Java Database ...

    基于JSP+Servlet小项目

    【基于JSP+Servlet小项目】是一个典型的JavaWeb应用程序,它是使用JavaServer Pages(JSP)技术和Servlet进行开发的。这个项目可能包含了从用户界面到后端数据处理的完整流程,展示了如何在Web环境中整合这两种技术...

    JSP与Servlet学习课件

    **JSP(Java Server Pages)与Servlet是Java Web开发中的两个核心技术,它们在构建动态Web应用程序方面发挥着关键作用。本课件旨在帮助学习者深入理解这两者的基础知识及其交互方式,以提升Web开发能力。** **JSP...

    林学良Jsp&Servlet学习笔记

    这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们结合使用来创建动态Web应用。同时...

    jsp,servlet基础理论知识

    本文将用通俗易懂的语言深入浅出地介绍JSP和Servlet的基础理论知识。 首先,我们来理解什么是JavaServer Pages(JSP)。JSP是Java平台上的一个标准视图技术,它允许开发者将HTML、CSS和JavaScript与Java代码相结合...

    Eclipse JSPServlet环境搭建

    Eclipse JSP/Servlet 环境搭建是 Java Web 开发的基础环境,本文将指导用户从零开始搭建 Eclipse JSP/Servlet 环境,包括安装 JDK、Eclipse J2EE、Tomcat 等软件包,并配置 Tomcat 服务器和 Eclipse 环境。...

    jsp+servlet做的连连看

    【标题】"jsp+servlet做的...总的来说,"jsp+servlet做的连连看"是一个很好的学习和实践案例,可以帮助初学者巩固JSP和Servlet的基础知识,提升Web开发技能。同时,通过实际操作,还能锻炼问题解决和项目管理能力。

Global site tag (gtag.js) - Google Analytics