Starting Tomcat Server at localhost failed

学习配置servlet过程中竟然能碰到服务器起不来的。

Starting Tomcat Server at localhost failed

  1. 现在eclipse越来越智能,新建一个servlet点击Finish,eclipse会自动帮我们生成好一些代码。帮我们节省了不少时间。

    Starting Tomcat Server at localhost failed

  2. 2

    但问题就出现在eclipse自动帮我们生成好的代码中。注意一下这个注释。

    Starting Tomcat Server at localhost failed步骤阅读

  3. 3

    这个注解是eclipse帮我们生成好的,而问题恰恰就出在这。我们知道,每次我们新建一个servlet后会在web.xml文件中配置映射关系,这样才能在浏览器敲入一个地址后,地址发来的请求能让服务器接收到请求并将该请求交给指定的Servlet去处理。

    Starting Tomcat Server at localhost failed

  4. 4

    所以导致服务器起不来的原因就是配置和自动生成的注解冲突了。会产生如下错误。

    Starting Tomcat Server at localhost failed

  5. 5

    解决的办法就是:删除web.xml中的映射,或者将自动生成的注解删除掉,这样就不会有冲突了,二者选其一留下即可。再启动服务器就能正常成功启动了。

    Starting Tomcat Server at localhost failed

  6. 还有搜索的一些其人的经验:==================================================

  7. 1、把你工作空间按照如下的文件路径打开:

    <workspace>\.metadata\.plugins\org.eclipse.wst.server.core

    删除里面的temp文件夹,删除后重启eclipse,tomcat就可以用了。

    2、把你工作空间按照如下的文件路径打开:

    <workspace>\.metadata\.plugins\org.eclipse.core.resources

    删除 .snap 文件,(我在使用eclipse下有这个.snap文件)。

     

    3、在server视图窗口中,把tomcat删除。然后再重新添加tomcat 再添加你的Web项目并启动。

     

    4、打开任务管理器,找到javax.exe,右键结束进程,重启eclipse。

     

    5、检查web.xml中的servlet映射里面的<url-pattern>,看<url-pattern></url-pattern>中配置的内容是否缺少“/” ,"/"表示当前web应用。这个问题也可能是由过滤器引起的。

     

    6、不同的servlet使用了相同的@WebServlet标注。在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息

     

    举个例子:

    @WebServlet("/DownLoadDemo2")
    public class DownLoadDemo2 extends HttpServlet{

    当用户请求的URL是"/DownLoadDemo2",则由DownLoadDemo2的实例提供服务。

    注:@WebServlet("/DownLoadDemo2")这种方式称为注解,省去在web.xml中进行配置。

    例如:

    <servlet>
      <!-- 声明Servlet对象 -->
      <servlet-name>RequestDemo1</servlet-name>
      <!-- 上面一句指定Servlet对象的名称 -->
      <servlet-class>com.jd.request.RequestDemo1</servlet-class>
      <!-- 上面一句指定Servlet对象的完整位置,包含包名和类名 -->
    </servlet>
    <servlet-mapping>
      <!-- 映射Servlet -->
      <servlet-name>RequestDemo1</servlet-name>
      <!--<servlet-name>与上面<Servlet>标签的<servlet-name>元素相对应,不可以随便起名 -->
      <url-pattern>/RequestDemo1</url-pattern>
      <!-- 上面一句话用于映射访问URL -->
    </servlet-mapping>