博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实例解析Servlet运行原理
阅读量:5372 次
发布时间:2019-06-15

本文共 2499 字,大约阅读时间需要 8 分钟。

一、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("");		resp.getWriter().println("");		resp.getWriter().println("");		resp.getWriter().println("");		resp.getWriter().print("HelloWorld");		resp.getWriter().println("");		resp.getWriter().println("");	}}
        将建立好的FirstServlet程序编译后,拷贝到web application中的classes目录中。
 
        在web.xml配置文件中进行配置:
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">
fs
FirstServlet
fs
/servlet/FirstServlet
        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实例运行流程图:
 

转载于:https://www.cnblogs.com/CharmingDang/archive/2012/03/29/9663949.html

你可能感兴趣的文章
C#中Monitor和Lock以及区别
查看>>
【NOIP2017】奶酪
查看>>
5.6.3.7 localeCompare() 方法
查看>>
Linux下好用的简单实用命令
查看>>
描绘应用程序级的信息
查看>>
php环境搭建脚本
查看>>
php 编译常见错误
查看>>
MES架构
查看>>
hdu 2767(tarjan)
查看>>
sklearn之分类模型混淆矩阵和分类报告
查看>>
MySQL各存储引擎
查看>>
项目--简单导出CSV文件
查看>>
Oracle session相关数据字典(一)
查看>>
BZOJ 3399 [Usaco2009 Mar]Sand Castle城堡(贪心)
查看>>
获取元素属性get_attribute
查看>>
在Flex中用Validator检测数字、字符串、Email.
查看>>
[leetcode]4Sum
查看>>
POJ1062 昂贵的聘礼
查看>>
【零基础学习iOS开发】【02-C语言】08-基本运算
查看>>
Java 将指定字符串连接到此字符串的结尾 concat()
查看>>