Servlet原理解析及作用1

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


    

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

Servlet实例对象和初始化方法,默认情况下,只有第一次访问时才执行,且只执行一次。
           

四、servlet运行过程

用户的所有请求都是找servlet

整个过程可以这样简略:

 (1)web请求

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

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

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

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


图文介绍:

   


   


举一个例子代码:

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

             


     注:可以直接建立一个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());
		
	}

}

映射:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
	
  <servlet>
  	<servlet-name>ServletDom1</servlet-name>
  	<servlet-class>com.dp.java.Servlet.ServletDom1</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ServletDom2</servlet-name>
    <servlet-class>com.dp.java.Servlet.ServletDom2</servlet-class>
  </servlet>
  
  
  <servlet-mapping>
  	<servlet-name>ServletDom1</servlet-name>
  	<url-pattern>/ServletDom1</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletDom2</servlet-name>
    <url-pattern>/servlet/ServletDom2</url-pattern>
  </servlet-mapping>
  
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

注:<welcome-file-list>指默认走的页面


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

    

                     


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

如下图tomcate中web.xml文件:

                


                





                     


                    



       

 最后值得一提的是:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值