其中,ExtClassLoader是Java虚拟毁局机内置的一个系统级别橘余者的类加载器,用于从jre/lib/ext目录中圆薯加载类或jar包。但是,Tomcat默认情况下不会加载ExtClassLoader,这是因为:
安全性考虑:如果允许加载ExtClassLoader,可能会出现安全漏洞,因为该类加载器加载的类可以访问系统级别的资源和功能。
可移植性考虑:如果Tomcat加载了ExtClassLoader,会导致应用程序依赖于Java运行时环境(JRE),降低了应用程序的可移植性。
因此,在默认情况下,Tomcat不会从jre/lib/ext目录加载类或jar包。如果需要加载这些类或jar包,可以将它们放在共享库(shared)目录下,并配置Common ClassLoader或Webapp ClassLoader来加载它们。
如果web.xml中配置无误的话,你看看WEB-INF/classes下有没有web.xml中所映射的类,
注意你所写的Servlet如果带有包声明,
在WEB-INF/classes下的类路径要带上完整的包结构路径.
你把你放置代码的路径贴出来我看看,
404就是找不到资源,
不是版本兼容的问题,如果是版本兼容的问题,
那应该是500错误.
孙鑫的代码我看过,
http://localhost:8888/ch06/hello访问的应该是这个映射:
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>SimpleHello</servlet-class>
</servlet>
你的目录结构是这样的吗?
├—webapps
│ │
│ ├—ch06
│ │ │ login.html
│ │ │ success.html
│ │ │ welcome.html
│ │ │
│ │ ├—src
│ │ │ CounterServlet.java
│ │ │ LoginServlet.java
│ │ │ LoginServlet2.java
│ │ │ OutputInfo.java
│ │ │ PortalServlet.java
│ │ │ SimpleHello.java
│ │ │ WelcomeYou.java
│ │ │
│ │ └—WEB-INF
│ │ │ web.xml
│ │ │
│ │ └—classes
│ │ CounterServlet.class
│ │ LoginServlet.class
│ │ LoginServlet2.class
│ │ OutputInfo.class
│ │ PortalServlet.class
│ │ SimpleHello.class
│ │ WelcomeYou.class
如果是这样的结构,web.xml也没问题的话,
不可带好能访问出404错误的.
如果你自己没把ch06放置于Tomcat的webapps目录下,
而是在别的地方,
注意你的server.xml配置是否正确,
如果你改动了server.xml,
贴出来看看.
一般来说,在Tomcat中webapps下的每个文件夹都是一个独立的Web应用,
ROOT文件夹是Tomcat的一个默认的Web应用,你输入http://localhost:8888
的时候,默认的访问就是ROOT文件夹下的index.html
ch06算是一个简单的Web应用,你不能在ROOT这个Web应用嵌套另一个Web应用,
对于静态页面来说,只要URL路径与真实的Web应用的目录结构路径一致,就能访问,但如果要访问Servlet,其class类文件必须放于Web应用(不要嵌套)的蠢睁铅WEB-INF/classes目早饥录下.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)