我正在将调用程序 servlet 之前部署的大量 Servlet 迁移到新的 tomcat7 安装。我知道我必须在 web.xml 中创建 servlet 和 servlet-mapping 元素才能让它工作,但我没有让它工作。 我首先将默认包中的所有旧 servlet 类现在都放在一个名为 servlet 的包中。 tomcat7 中的 ROOT 文件夹没有 WEB-INF 文件夹,所以我创建了这个,并在此文件夹中创建了一个新的 web.xml 文件,目前看起来像这样(只有 1 个 servlet 开始,以及从 etc/tomcat7/web.xml 复制的 web-apps 元素):
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>ScannerServlet</servlet-name>
<servlet-class>servlets.ScannerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ScannerServlet</servlet-name>
<url-pattern>/servlet</url-pattern>
</servlet-mapping>
</web-app>
然后我将所有类文件放在 ROOT\WEB-INF\classes\servlets 中 然后我重新启动了 tomcat 并尝试了 http://myip.com:8080/servlet/ScannerServlet但我随后得到“请求的资源不可用。 然后我尝试将 servlet 和 servlet-mapping 添加到 etc/tomcat7/web.xml 但没有成功。 我做错了什么?还是我做得对,但还有一些事情要做?
[编辑] 我尝试在 ROOT 中创建一个名为 servlet 的新文件夹,并将 WEB-INF 文件夹移至此处。 如果我在 servlet 文件夹中放置一个 index.html 文件,当我调用 http://myip.com:8080/servlet/ 时它会显示出来。但我仍然得到'尝试调用时请求的资源不可用.../servlet/ScannerServlet 或 .../servlet/servlet/ScannerServlet
最佳答案
我终于明白了! 我将我的文件和文件夹移动到 webapps/servlet/而不是 webapps/ROOT/ 然后我将 url-pattern 更改为/ScannerServlet 然后可以从 http://myip.com:8080/servlet/ScannerServlet 访问 servlet :-)
关于Tomcat7 部署以前由调用程序 servlet 部署的类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18461251/