首页
学习
活动
专区
圈层
工具
发布

404错误
EN

Stack Overflow用户
提问于 2015-06-16 11:52:20
回答 2查看 19K关注 0票数 5

我是servlet编程方面的新手。

下面是我的示例servlet代码

Sample.Java

代码语言:javascript
复制
public class Sample extends HttpServlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");  
        PrintWriter pw=res.getWriter();  

        String name=req.getParameter("name");//will return value  
        pw.println("Welcome "+name);  
        pw.close();  
    }
}

Web.xml

代码语言:javascript
复制
<web-app>
<servlet>
<servlet-name>sampleservlet</servlet-name>
<servlet-class>Sample</servlet-class>
<load-on-startup>1</load-on-startup> 
</servlet>
<servlet-mapping>
<servlet-name>sampleservlet</servlet-name>
<url-pattern>/Sample</url-pattern>
</servlet-mapping>
</web-app>

Index.html

代码语言:javascript
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form action="Sample" method="get">  
Enter your name<input type="text" name="name"><br>  
<input type="submit" value="login">  
</form>  
</body>
</html>

我的问题

当我右键单击我的项目,然后单击Run as -> Run on server,我选择服务器,它要求我选择一个服务器,然后选择要运行的服务器。在eclipse窗口中,将打开一个浏览器窗口,其地址URL为http://localhost:8080/Sample/

当我点击login时,会出现这样的错误,

HTTP状态404 -/Sample/欢迎

类型状态报告

消息/Sample/欢迎

description请求的资源不可用。

Apache /7.0.62

截图

为什么我会犯这样的错误?

其他细节

服务器:apache-tomcat-7.0.62 IDE: Eclipse开普勒

我试图解决这个问题的步骤

我试过这些,

  1. 尝试运行servlet时获取HTTP状态404错误

结果

我没有在.class文件夹中看到WEB-INF文件。

  1. Tomcat在servlet中提供404错误

结果在这个路径“tomcat7 7\work\Catalina\localhost\your app”中,work文件夹为空。

如果我需要更多的细节,请告诉我。

IDE的目录结构

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-16 12:45:49

在tomcat 7和eclipse中,您的代码确实适用于我。也许你的index.html和你发布的不一样,因为它的目标是样本/欢迎,而不是样本/样本。

提示:

  • 确保您的index.html发布版本与代码中的版本相同。修改内容并确保其正确发布。
  • 直接在浏览器中加载http://localhost:8080/Sample/Sample?name=Random,以查看servlet是否正常工作。
  • 双击服务器上的Tomcat7。进入您的服务器路径。例如,C:\Java\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\Sample\WEB-INF\classes (您的示例类应该在那里),再次检查您在这些文件夹中是否有权限。
  • 将项目导出为WAR,并在没有eclipse的情况下将其直接部署到猫猫中。
  • 清理/构建项目
  • 在Servers/server.xml a下的Package中,如果不对这些文件夹中的permisions进行双重检查,则应该具有声明的上下文,例如<Context docBase="Sample" path="/Sample" reloadable="false" source="org.eclipse.jst.jee.server:Sample"/></Host>。重新添加您的tomcat7服务器。

票数 2
EN

Stack Overflow用户

发布于 2015-06-16 12:02:39

尝试这样做,您不需要为任何servlet编写XML文件;)

只需添加注释@WebServlet("/urlpattern")并从<form action="urlpattern">调用JSP内部的URL-模式即可。

除非你在Eclipse上工作。

代码语言:javascript
复制
@WebServlet("/Sample")
public class Sample extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

    res.setContentType("text/html");  
    PrintWriter pw = res.getWriter();  

    String name = req.getParameter("name"); //will return value  
    pw.println("Welcome "+name);  
    pw.close();  
}}

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30866782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档