Eclipse在Dynamic web project下创建的servlet 报404

VitoYi 2017-03-07 05:20:30
1、Dynamic web project下,我创建servlet:


2、创建 servlet 后,我开始配置 web.xml 文件,具体如下:


3、可以从我的工程,看出我的配置并没有出错:


4、启动 tomcat 之后,我尝试打开 servlet 的 url,第一次是报500的错误:


5、刷新一次,开始报404的错误,然后不管怎么刷新,都是404:



哪位大神帮我解决了,可以加我 Q:29755571,我再给您发个20元的红包。虽然不多,但是这个问题已经纠结了一下午,所以还是请大神帮帮忙,感激不尽。
...全文
658 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41324568 2018-11-29
  • 打赏
  • 举报
回复
感谢上面同胞
励志小青年11 2017-03-08
  • 打赏
  • 举报
回复
你能访问tomcat么?试一下
VitoYi 2017-03-08
  • 打赏
  • 举报
回复
感谢 @qq_30831935 用了加我 Q,用了一下我的时间帮我排错,终于找到问题了,是我没有勾选"project---> Build Automatically"。。。 当时取消掉这个,是因为出现一个问题。
我在eclipse 中 Run As时,然后就弹出一个进度框,等N长时间,进度还是1%。之后我在此项目中对文件所做的任何更改都会弹出一个显示框,标题是"user operation is waiting" 所以我就在网上找方法,说是把"project---> Build Automatically"的钩去掉...重启ide 的确解决当时的问题了。但没想到,这个设置竟然影响到了servlet的编译。。。 再次感谢@qq_30831935 ,以及其他帮我花时间帮我解答问题的朋友,感激不尽
VitoYi 2017-03-08
  • 打赏
  • 举报
回复
确定配置都没问题,浏览器进入:localhost:8080/TestWeb/Cnm404 之后,控制台弹出如下错误:



java.lang.ClassNotFoundException,没有找到该类,说明没有编译成功,但是完全不明白哪里出错了
VitoYi 2017-03-08
  • 打赏
  • 举报
回复
引用 12 楼 pany1209 的回复:
[quote=引用 11 楼 VitoYi 的回复:] [quote=引用 10 楼 qq_24295251 的回复:] 你能访问tomcat么?试一下
能的, [/quote]在tomcat中把项目删了,注解和xml用一个,重新部署项目看看。。。[/quote] 尝试过了,删除tomcat配置,tomcat8 和9 都试过了,删除了tomcat下的webapps,清除缓存,重新发布工程,都不行。
李德胜1995 2017-03-08
  • 打赏
  • 举报
回复
引用 11 楼 VitoYi 的回复:
[quote=引用 10 楼 qq_24295251 的回复:] 你能访问tomcat么?试一下
能的, [/quote]在tomcat中把项目删了,注解和xml用一个,重新部署项目看看。。。
VitoYi 2017-03-08
  • 打赏
  • 举报
回复
引用 10 楼 qq_24295251 的回复:
你能访问tomcat么?试一下


能的,


李德胜1995 2017-03-07
  • 打赏
  • 举报
回复
引用 8 楼 VitoYi 的回复:
[quote=引用 7 楼 pany1209 的回复:] [quote=引用 6 楼 VitoYi 的回复:] [quote=引用 5 楼 pany1209 的回复:] [quote=引用 4 楼 VitoYi 的回复:] [quote=引用 2 楼 pany1209 的回复:] Cnm404代码贴出来。。。。
以下:
package com.vito.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Cnm404
 */
@WebServlet("/Cnm404")
public class Cnm404 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Cnm404() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
[/quote]去掉注解试试。。。@WebServlet("/Cnm404")[/quote] 尝试过了,不行。 去掉注解保留 web.xml 的<servlet>和 <servlet-mapping>,或者是保留注解,去掉web.xml 的<servlet>和 <servlet-mapping>,或者是同时保留,都不行[/quote]这就奇怪了,两个都写肯定要报错的,工程删了,重新写一个,sevlet2.5就用xml,servlet3.0就用注解,换个tomcat7吧。。。[/quote] 7部署不了,我下了个tomcat8,还是同样的错误,显示500,然后是404,应该不是tomcat版本的问题[/quote]我用jdk1.8和tomcat7一点问题都没有
VitoYi 2017-03-07
  • 打赏
  • 举报
回复
引用 7 楼 pany1209 的回复:
[quote=引用 6 楼 VitoYi 的回复:] [quote=引用 5 楼 pany1209 的回复:] [quote=引用 4 楼 VitoYi 的回复:] [quote=引用 2 楼 pany1209 的回复:] Cnm404代码贴出来。。。。
以下:
package com.vito.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Cnm404
 */
@WebServlet("/Cnm404")
public class Cnm404 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Cnm404() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
[/quote]去掉注解试试。。。@WebServlet("/Cnm404")[/quote] 尝试过了,不行。 去掉注解保留 web.xml 的<servlet>和 <servlet-mapping>,或者是保留注解,去掉web.xml 的<servlet>和 <servlet-mapping>,或者是同时保留,都不行[/quote]这就奇怪了,两个都写肯定要报错的,工程删了,重新写一个,sevlet2.5就用xml,servlet3.0就用注解,换个tomcat7吧。。。[/quote] 7部署不了,我下了个tomcat8,还是同样的错误,显示500,然后是404,应该不是tomcat版本的问题
李德胜1995 2017-03-07
  • 打赏
  • 举报
回复
引用 6 楼 VitoYi 的回复:
[quote=引用 5 楼 pany1209 的回复:] [quote=引用 4 楼 VitoYi 的回复:] [quote=引用 2 楼 pany1209 的回复:] Cnm404代码贴出来。。。。
以下:
package com.vito.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Cnm404
 */
@WebServlet("/Cnm404")
public class Cnm404 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Cnm404() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
[/quote]去掉注解试试。。。@WebServlet("/Cnm404")[/quote] 尝试过了,不行。 去掉注解保留 web.xml 的<servlet>和 <servlet-mapping>,或者是保留注解,去掉web.xml 的<servlet>和 <servlet-mapping>,或者是同时保留,都不行[/quote]这就奇怪了,两个都写肯定要报错的,工程删了,重新写一个,sevlet2.5就用xml,servlet3.0就用注解,换个tomcat7吧。。。
VitoYi 2017-03-07
  • 打赏
  • 举报
回复
引用 5 楼 pany1209 的回复:
[quote=引用 4 楼 VitoYi 的回复:] [quote=引用 2 楼 pany1209 的回复:] Cnm404代码贴出来。。。。
以下:
package com.vito.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Cnm404
 */
@WebServlet("/Cnm404")
public class Cnm404 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Cnm404() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
[/quote]去掉注解试试。。。@WebServlet("/Cnm404")[/quote] 尝试过了,不行。 去掉注解保留 web.xml 的<servlet>和 <servlet-mapping>,或者是保留注解,去掉web.xml 的<servlet>和 <servlet-mapping>,或者是同时保留,都不行
李德胜1995 2017-03-07
  • 打赏
  • 举报
回复
引用 4 楼 VitoYi 的回复:
[quote=引用 2 楼 pany1209 的回复:] Cnm404代码贴出来。。。。
以下:
package com.vito.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Cnm404
 */
@WebServlet("/Cnm404")
public class Cnm404 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Cnm404() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
[/quote]去掉注解试试。。。@WebServlet("/Cnm404")
VitoYi 2017-03-07
  • 打赏
  • 举报
回复
引用 2 楼 pany1209 的回复:
Cnm404代码贴出来。。。。
以下:
package com.vito.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Cnm404
 */
@WebServlet("/Cnm404")
public class Cnm404 extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Cnm404() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}
VitoYi 2017-03-07
  • 打赏
  • 举报
回复
引用 1 楼 qq_30831935 的回复:
Cnm404.java 看看这个类有没有 extends HttpServlet
有的,继承了HttpServlet
李德胜1995 2017-03-07
  • 打赏
  • 举报
回复
Cnm404代码贴出来。。。。
鱿鱼ing 2017-03-07
  • 打赏
  • 举报
回复
Cnm404.java 看看这个类有没有 extends HttpServlet

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧