Java Tomcat使用servlet给出404错误
我使用Java Tomcat使用servlet给出404错误,java,tomcat,servlets,http-status-code-404,openjdk,Java,Tomcat,Servlets,Http Status Code 404,Openjdk,我使用tomcat7和oraclejdk1.7以及neatbeans7.3开发了一个javaweb应用程序。我的应用程序在本地pc上运行,没有任何错误 但是在我托管了我的应用程序之后,我无法访问servlet。它给了我404错误。在映射servlet的应用程序中,我没有使用web.xml。我使用了注释 托管服务器使用tomcat7和openjdk1.7 可能是什么问题?我怎样才能解决这个问题 新更新 我购买主机的地方给了我上传文件的cPanel。tomcat中没有上传war文件的位置,也没有上传
tomcat7
和oraclejdk1.7
以及neatbeans7.3
开发了一个javaweb应用程序。我的应用程序在本地pc上运行,没有任何错误
但是在我托管了我的应用程序之后,我无法访问servlet。它给了我404
错误。在映射servlet的应用程序中,我没有使用web.xml
。我使用了注释
托管服务器使用tomcat7
和openjdk1.7
可能是什么问题?我怎样才能解决这个问题
新更新
我购买主机的地方给了我上传文件的cPanel
。tomcat中没有上传war
文件的位置,也没有上传文件到webapps
director的位置。所以我把文件上传到public\uhtml
目录。我想这可能就是问题所在。因为当我试图访问像www.mysite.com/A
这样的servlet时,服务器会在root
directoy中搜索它。但事实上它并不存在。因此它给出了404
错误
我认为这可能是问题所在。有什么建议吗
已更新
注释如下所示
@WebServlet(name = "AddCustomer", urlPatterns = {"/AddCustomer"})
从下载Servlet
目录结构
检查以下各项:
- 应用程序是否位于tomcat/webapps下面
- 你能从tomcat经理那里看到吗
- 日志中有错误吗
- 应用程序是否位于tomcat/webapps下面
- 你能从tomcat经理那里看到吗
- 日志中有错误吗
在将项目部署到tomcat签入到“tomcat7\work\Catalina\localhost\your app”后,您可以尝试从Amazon获得为期一年的EC2试用版(如果该位置存在类)。如果存在类,则不应成为问题。将项目部署到tomcat后,如果该位置存在类,请签入“tomcat7\work\Catalina\localhost\your app”。如果有类,那么就不应该是问题。注释不能“开箱即用”,您仍然必须告诉Tomcat查找带注释的
Servlet
类。为此,您需要使用正确版本的web.xml
:
<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">
我没有使用NetBeans,但像Eclipse一样,它可能有项目属性,允许您将动态Web项目方面指定为Servlet 3.0值,该值将转换为上面显示的Web.xml
行
您应该检查项目的WEB-INF
文件夹中的WEB.xml
或尝试正确导出它-WAR文件应该(必须)包含WEB-INF/WEB.xml
文件
更新
您可以在web.xml
标题中使用Servlet3.0版本来“告诉它”。对于早期版本,Tomcat不希望使用带有注释标记的servlet,也就是说,您必须在XML中手动列出它们
至于更新的问题-您得到的是404,因为Apache HTTP服务器(可能是安装的)不理解WAR或JSP文件,您需要将其配置为将请求转发到Tomcat,而Tomcat可能位于另一个端口(默认为8080)-这称为AJP或HTTP代理,也就是说,Apache服务器充当Tomcat的前端代理。在Stackoverflow这里有manny关于这个问题的答案。
您不会将WAR文件部署到public\uHTML
,因为PHP或PerlWebApps就是在那里部署的
如果你真的安装了Tomcat,你应该向你的主机提供商询问,它安装在哪个端口,在哪里部署你的Java web应用程序。注释不能“开箱即用”,你仍然必须告诉Tomcat查找带注释的Servlet
类。为此,您需要使用正确版本的web.xml
:
<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">
我没有使用NetBeans,但像Eclipse一样,它可能有项目属性,允许您将动态Web项目方面指定为Servlet 3.0值,该值将转换为上面显示的Web.xml
行
您应该检查项目的WEB-INF
文件夹中的WEB.xml
或尝试正确导出它-WAR文件应该(必须)包含WEB-INF/WEB.xml
文件
更新
您可以在web.xml
标题中使用Servlet3.0版本来“告诉它”。对于早期版本,Tomcat不希望使用带有注释标记的servlet,也就是说,您必须在XML中手动列出它们
至于更新的问题-您得到的是404,因为Apache HTTP服务器(可能是安装的)不理解WAR或JSP文件,您需要将其配置为将请求转发到Tomcat,而Tomcat可能位于另一个端口(默认为8080)-这称为AJP或HTTP代理,即,Apache服务器充当前端代理