Servlet原理解析及作用1

ServletAPI中的主要接口或类的核心类图(很重要)


    Servlet原理解析及作用1_第1张图片

一、Servlet定义

   Servlet是使用Java Servlet应用程序设计接口及相关类和方法的Java程序。它在Web服务器上或应用服务器上运行并扩展了该服务器的能力。Java Servlet对于Web服务器就好像Java Applet对于Web浏览器。Applet装入Web浏览器并在Web浏览器内执行,而Servlet则是装入Web服务器并在Web服务器内执行。 Java Servlet API 定义了Servlet和服务器之间的一个标准接口,这使得Servlet具有跨服务器平台的特性。

   Servlet通过创建一个框架扩展服务器的能力,采用请求-响应模式提供Web服务。当客户机发送请求至服务器时,服务器将请求信息发送给Servlet,Servlet生成响应内容并将其传给Server,然后再由Server将响应返回给客户端。

二、Servlet概述
1、Servlet是SUN公司制定的一套开发动态网页的技术。
2、JavaEE相关的类,包名一般都是以javax开头

图解:

Servlet原理解析及作用1_第2张图片

三、Servlet的生命周期
当客户端服务器向进行请求的时候tomcate中的容器最终要调用service方法为客户进行服务,并且向客户端网页进行回应。
1、Servlet接口中的常用方法:
public void init(ServletConfig config):初始化。Servlet类被实例化后就执行,且执行一次。由容器进行
                   调用
public void service()   作用是用来处理请求的
public void destroy():销毁Servlet对象。由容器进行调用在内存中一个Servlet只有一个实例。针对不同
                 
的用户请求,容器采用多线程的机制调用service方法的。

Servlet实例对象和初始化方法,默认情况下,只有第一次访问时才执行,且只执行一次。
            Servlet原理解析及作用1_第3张图片

四、servlet运行过程

用户的所有请求都是找servlet

整个过程可以这样简略:

 (1)web请求

 (2) tomcate服务器调用servlet组件

                                   (3)web项目下的xml文件中的标签中的url-pattern地址

                                    (4)然后再找到该标签中的servlet-name,从而找到标签中的servlet-name,然后找到servlet类进行处理。

                                    (5)然后通过servier的处理得到响应,通过服务器响应到web。


图文介绍:

   Servlet原理解析及作用1_第4张图片


   Servlet原理解析及作用1_第5张图片


举一个例子代码:

一个标准的web-servlet应用目录:

             Servlet原理解析及作用1_第6张图片


     注:可以直接建立一个servlet类:直接new一个servlet类,勾选dopost及doget方法(没有指明走那个方法,默认执行该方法),最后下一步,勾选Generate/Map web.xml(将该servlet类映射到xml文件中。)

 

HttpServlet 中的service方法是典型的模板设计模式的具体应用。  

  

package com.dp.java.Servlet;

import java.io.IOException;
import java.io.PrintWriter;

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

public class ServletDom2 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.flush();
		out.close();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.flush();
		out.close();
	}

}

package com.dp.java.Servlet;

import java.io.IOException;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class ServletDom1 extends GenericServlet {

	@Override
	public void service(ServletRequest request, ServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getOutputStream().write("haha".getBytes());
		
	}

}

映射:



	
  
  	ServletDom1
  	com.dp.java.Servlet.ServletDom1
  
  
    ServletDom2
    com.dp.java.Servlet.ServletDom2
  
  
  
  
  	ServletDom1
  	/ServletDom1
  
  
    ServletDom2
    /servlet/ServletDom2
  
  
  
  
    index.jsp
  

注:指默认走的页面


五、web.xml文件的映射的细节问题

    

                     Servlet原理解析及作用1_第7张图片


   当 /出现时,servlet将会成为这个应用程序的缺省servlet,在tomcat work space\apache-tomcat-6.0.24\conf中可以找到web.xml中可以找到设置的缺省。

如下图tomcate中web.xml文件:

                Servlet原理解析及作用1_第8张图片


                Servlet原理解析及作用1_第9张图片





                     Servlet原理解析及作用1_第10张图片


                    Servlet原理解析及作用1_第11张图片



       

 最后值得一提的是:

servlet3.0之后,新建web应用就不会出现web.xml文件了,这里是新特性介绍:http://www.ibm.com/developerworks/cn/java/j-lo-servlet30/#major3



你可能感兴趣的:(--------《Java》)