实例解析Servlet运行原理

原创 2012年03月29日 20:38:14
一、Servlet运行原理
1、Web Application的标准目录结构:
        WEB-INF/classes——存放编译好的servlet,即由JDK编译好的类(.class)文件
                      /lib——该Web Application用到的依赖包
                      /Web.xml——该Web Application的配置文件
        一个完成的web应用程序的目录下,必须包含以上目录结构。
         Web Application可以直接放在Tomcat的webapps目录下面,也可以通过配置文件指定到其他目录:在server.xml文件中<host>标签中<Context path="/虚拟路径名称" docBase="Web application目录位置" debug="0" reloadable="true"/>
        了解完这些,我们看一下servlet到底是怎么在tomcat中运行的。
2、Tomcat解析URL
        第一步:URL的一般形式:<URL的访问方式>://<主机>:<端口>/<路径>
        <端口>可以在tomcat中conf目录下的server.xml中设置,默认为8080。<路径>包含了项目名称和文件路径。tomcat启动后,监听8080端口,当有URL请求发过来之后,tomcat根据url解析出项目名称,然后到webapps目录下搜索到该项目文件夹。
        第二步:项目文件找到后,根据配置文件寻找类文件。配置文件web.xml起到信号中转的作用,用于将url中截取的文件路径和相应的文件匹配(这里相应的文件先以.class文件为例),以便tomcat运行时能够定位到所需的文件上。
第三步:将.class文件加载到内存后,然后调用相应的方法。
        tomcat首先new一个servlet,而且仅仅创建一次。调用相应的方法时,tomcat首先调用Servlet的service方法,然后service方法再根据提交表单时的方法(method=post/get)调用doGet()或doPost()。
 
二、下面举一实例说明Servlet运行原理
        建立项目test-servlet,建立FirstServlet并继承HttpServlet,然后覆盖doGet或doPost方法,此处覆盖doGet方法,代码如下:
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 FirstServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		//输出到控制台
		//System.out.println();
		//输出到浏览器
		resp.setContentType("text/html");
		//resp.getWriter().print("HelloWorld");
		resp.getWriter().println("<html>");
		resp.getWriter().println("<head>");
		resp.getWriter().println("</head>");
		resp.getWriter().println("<body>");
		resp.getWriter().print("HelloWorld");
		resp.getWriter().println("</body>");
		resp.getWriter().println("</html>");
	}
}

        将建立好的FirstServlet程序编译后,拷贝到web application中的classes目录中。
 
        在web.xml配置文件中进行配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4">
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	
	<servlet>
		<servlet-name>fs</servlet-name>
		<servlet-class>FirstServlet</servlet-class>
		
		<servlet-mapping>
			<servlet-name>fs</servlet-name>
			<url-pattern>/servlet/FirstServlet</url-pattern>
		</servlet-mapping>
	</servlet>
</web-app>
  
        web配置过程解析:tomcat首先根据url地址找到<url-pattern>中的/servlet/FirstServlet,然后找到<servlet-mapping>中的<servlet-name>fs,然后根据<servlet-name>找到<servlet>标签中的<servlet-name>(所以这两个name应该是一致的,否则就找不到了),最后找到<servlet-class>中的class类文件,对class文件加载到内存中,创建一个servlet然后调用相应的.class方法。
 
        此servlet实例运行流程图:

 

Servlet工作原理解析

目录  ---写在前面---Servlet的使用与侧重点---Servlet的工作原理 a---Servlet容器怎样工作(以Tomcat为例) b---Web应用在servlet容器中如何启动 c-...
  • levycc
  • levycc
  • 2016年02月24日 11:14
  • 5286

深入理解Tomcat系列之六:Servlet工作原理

前言Servlet是Web开发中的核心技术,作为一名合格的开发人员,就必须清楚Servlet的工作原理。本章没有对Servlet技术本身进行详细的说明,只是针对开发过程中一次Servlet的请求的处理...
  • u011116672
  • u011116672
  • 2016年03月27日 21:31
  • 5228

Servlet 工作原理解析

转自:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/ Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 ...
  • a1259109679
  • a1259109679
  • 2015年08月29日 22:29
  • 1902

Servlet技术的自我理解之三:Servlet运行原理及Servlet的加载实例化

Servlet是Java编写的Server端程序,可以扩展服务器的能力,并采用请求-响应模式提供WEB服务 【注】:要区分Servlet、JavaScript、Java Applet三者的区别。 (1...
  • chenshuo8725
  • chenshuo8725
  • 2014年03月29日 11:37
  • 2360

servlet运行原理

  • 2015年09月07日 22:23
  • 88KB
  • 下载

Servlet运行原理及其生命周期

神马是Servlet?   --如何访问静态页面?         答:通过浏览器发送请求,访问服务端的HTML。   --那么如何访问动态页面呢?         答:通过Servlet可以动态生成...
  • duyuehan
  • duyuehan
  • 2016年04月17日 15:49
  • 586

J2EE Servlet运行原理

客户发送 一个 servlet请求的时候 先被Servlet容器(Tomcat服务器中的server元素)接收到  Servlet容器会帮你创建一个ServletRequest对象(中封装了客户的HT...
  • xuezhan032200
  • xuezhan032200
  • 2013年05月27日 10:23
  • 546

Servlet运行周期与原理流程

一、Servlet运行周期 Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、servic...
  • novelly
  • novelly
  • 2013年05月08日 23:14
  • 431

Servlet工作运行原理

从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了...
  • Li_work
  • Li_work
  • 2014年05月26日 10:40
  • 652

Servlet运行周期与原理流程

一、Servlet运行周期       Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init(...
  • lfsf802
  • lfsf802
  • 2012年01月20日 14:50
  • 5116
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实例解析Servlet运行原理
举报原因:
原因补充:

(最多只允许输入30个字)