欢迎来到皮皮网网首页

【分析整个项目源码】【线程池源码阅读】【oa源码信用盘】servlet 源码jar

来源:运营网站源码 时间:2024-11-25 12:42:50

1.eclipse下httpservlet类用不了,应该导入什么安装包?
2.如何使用eclipse创建简单的servlet
3.如何解决依赖包servlet-api和容器自带servlet的jar包的冲突

servlet 源码jar

eclipse下httpservlet类用不了,应该导入什么安装包?

       åº”该导入tomcat——lib目录下面的tomcat-api.jar文件

       HttpServlet的功能 

       HttpServlet首先读取Http请求的内容。Servlet容器负责创建HttpServlet对象,并把Http请求直接封装到HttpServlet对象中,大大简化了HttpServlet解析请求数据的工作量。HttpServlet容器响应Web客户请求流程如下:

       1)Web客户向Servlet容器发出Http请求;

       2)Servlet容器解析Web客户的Http请求;

       3)Servlet容器创建一个HttpRequest对象,在这个对象中封装Http请求信息;

       4)Servlet容器创建一个HttpResponse对象;

       5)Servlet容器调用HttpServlet的service方法,把HttpRequest和HttpResponse对象作为service方法的参数传给HttpServlet对象;

       6)HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息;

       7)HttpServlet调用HttpResponse的有关方法,生成响应数据;

       8)Servlet容器把HttpServlet的响应结果传给Web客户。

如何使用eclipse创建简单的servlet

       servlet需要继承HttpServlet来创建,所以必须把jar包引进项目中来。

       1、进jar包,方法如下:

       åœ¨eclipse中新建一个项目-->项目右键-->Build Path-->Add External Archives-->tomcat-->lib-->servlet-api.jar

       2、创建servlet:

       åœ¨é¡¹ç›®é‡Œé¢æ–°å»ºä¸€ä¸ªç±»ï¼Œç»§æ‰¿HttpServlet,重写doGget方法,此时一个servlet已经建成(需要使用的话还需要以下步骤)。

       3、在tomcat中部署servlet(servlet是一个组件,需要由tomcat访问)

       åœ¨tomcat的webapps文件新建一个文件夹(项目名),里面建立一个WEB-INF文件夹,用来放servlet编译后的.class文件和web.xml配置文件,如下图:

       4、配置web.xml配置文件

       5、启动服务器

       6、在浏览器地址栏里面输入url地址来访问servlet的doaGet方法。

如何解决依赖包servlet-api和容器自带servlet的jar包的冲突

       è§£å†³ä¾èµ–包servlet-api和容器自带servlet的jar包的冲突的办法:

       åœ¨web应用中,WEB-Inf目录下,也可以建立lib子目录,在此子目录下可以存放各种jar文件,这些jar文件只能被当前web应用访问。其中,在web-inf目录下的lib与classes目录,Tomcat类装载器先装载classes目录下的类,再装载lib目录下的类。因为类同名时,classes优先。

       å…¶ä¸­jsp运行时,查找class的顺序为:项目文件夹(WEB-INF\lib)—>容器文件夹(tomcat\common\lib)—>jdk文件夹(jdk\jre\lib\ext)

       Tomcat是一种向上寻找的层次结构,也有向下的,或者是可配置的。

       Tomcat的class加载的优先顺序一览

       â€”———-

       1.最先是$JAVA_HOME/jre/lib/ext/下的jar文件。

       2.环境变量CLASSPATH中的jar和class文件。

       3.$CATALINA_HOME/common/classes下的class文件。

       4.$CATALINA_HOME/commons/endorsed下的jar文件。

       5.$CATALINA_HOME/commons/in下的jar文件。

       6.$CATALINA_HOME/common/lib 下的jar文件。(JDBC驱动之类的jar文件可以放在这里,避免配置好数据源却找不到JDBC Driver的情况。)

       7.$CATALINA_HOME/server/classes下的class文件。

       8.$CATALINA_HOME/server/lib/下的jar文件。

       9.$CATALINA_BASE/shared/classes 下的class文件。

       .$CATALINA_BASE/shared/lib下的jar文件。

       .各自具体的webapp /WEB-INF/classes下的class文件。

       .各自具体的webapp /WEB-INF/lib下的jar文件。

       class的搜寻顺序如下

       â€”———-

       /WEB-INF/classes of your web application

       /WEB-INF/lib/*.jar of your web application

       $CATALINA_HOME/common/classes

       $CATALINA_HOME/common/endorsed/*.jar

       $CATALINA_HOME/common/in/*.jar

       $CATALINA_HOME/common/lib/*.jar

       $CATALINA_BASE/shared/classes

       $CATALINA_BASE/shared/lib/*.jar

       â€”———–

       å› æ­¤æ”¾åœ¨ä¸åŒwebapp里的class文件,会被classloader加载成不同的实例。

       åœ¨ä¸åŒçš„webapp加载相同类名的类互不影响。

       ä½†æ˜¯æ³¨æ„ï¼Œä»¥ä¸‹åŒ…名开头的class例外:

       javax.*

       org.xml.sax.*

       org.w3c.dom.*

       org.apache.xerces.*

       org.apache.xalan.*

       ps,分析整个项目源码注意.在各个jar中的\META-INF\MAINFEST.MF文件里Class-Path键值对,也会提供jar的加载优先顺序。

       ä¾‹å¦‚某jar的MAINFEST.MF内容如下:

       Manifest-Version: 1.0

       Created-By: Zianed

       Class-Path: commons-beanutils.jar

       Class-Path: commons-collections.jar

       Class-Path: commons-dbcp.jar

       Class-Path: commons-digester.jar

       Class-Path: commons-logging.jar

       Class-Path: commons-pool.jar

       Class-Path: commons-services.jar

       Class-Path: commons-validator.jar

       Class-Path: jakarta-oro.jar

       Main-Class: Test