今天在学习Servlet的时候遇到了一个问题:大概是这样java.lang.ClassNotFoundException: HelloServlet at org.apache.catalina.loader.WebappClassLoader.loadClass,google后在 http://stackoverflow.com/questions/10380782/java-lang-classnotfoundexception-helloservlet-at-org-apache-catalina-loader-web 找到了答案。 其实就是把编译好的class放到应用的classes文件夹下的时总是提示找不到class.

  文件的目录结构是这样的:

原来我是把编译好的class文件直接放到classes目录下的,没有加打包的目录,后来添加了/classes/com/tsinghua,tomcat就可以找到对应的类,这个bug大概花费了2小时的时间,从此我对包的认识更深刻了。

  部分web.xml内容如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true"> <display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<!--jspc servlet mappings start--> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>hello</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.Hello</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>hello</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/hello</url-pattern>
</servlet-mapping> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>helloGen</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.HelloGen</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>helloGen</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/helloGen</url-pattern>
</servlet-mapping> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>helloHttp</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.HelloHttp</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>helloHttp</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/helloHttp</url-pattern>
</servlet-mapping> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>login</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.Login</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>login</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/</url-pattern>
</servlet-mapping> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>login</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.Login</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>login</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/login</url-pattern>
</servlet-mapping> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>verify</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.Verify</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>verify</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/verify</url-pattern>
</servlet-mapping> <servlet>
<!--给你的servlet取名,名字任意-->
<servlet-name>welcome</servlet-name>
<!--指明servlet路径(包名+类名)-->
<servlet-class>com.tsinghua.Welcome</servlet-class>
</servlet>
<servlet-mapping>
<!--给你的servlet取名,名字任意-->
<servlet-name>welcome</servlet-name>
<!--在浏览器中输入的访问该servlet的url-->
<url-pattern>/welcome</url-pattern>
</servlet-mapping> </web-app>

Servlet基础的更多相关文章

  1. JSP数据交互(二)和Servlet基础

    01.Application原理与应用 01.application对象的作用域范围是整个应用服务,而它在应用中所承担的责任就类似于一个全局变量.只要服务启动,则application对象就会存在. ...

  2. Servlet基础(三) Servlet的多线程同步问题

    Servlet基础(三) Servlet的多线程同步问题 Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率. 由于Servlet/JSP默认是以多线程模式执行的, ...

  3. Servlet基础(二) Servlet的生命周期

    Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...

  4. Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解

    Servlet基础(一) Servlet基础和关键的API介绍 Servlet简介 Java Servlet是和平台无关的服务器端组件,它运行在Servlet容器中. Servlet容器负责Servl ...

  5. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  6. Servlet基础简单总结(上)

    Servlet基础一些简单总结(上): 1.Java Servlet是运行在Web服务器上的Java程序2.Java平台给Servlet开发者提供了强大的API/面向对象编程平台无关/强类型/垃圾回收 ...

  7. servlet总结:Servlet基础

    Servlet基础 1.手工编写第一个Servlet ⑴继承HttpServlet ⑵重写doGet()或者doPost()方法 ⑶在web.xml中注册Servlet 2.使用eclipse编写第一 ...

  8. servlet基础(组成与生命周期)

    servlet基础作用:servlet是运行在Web服务器或应用服务器上的程序:担当web浏览器或其他HTTP客户程序发出的请求与HTTP服务器上的数据库或应用程序之间的中间层.1.读取客户程序发送的 ...

  9. Unit01: Servlet基础 、 HTTP协议

    Unit01: Servlet基础 . HTTP协议 在页面上输出当前时间 package web; import java.io.IOException; import java.io.PrintW ...

  10. Servlet基础教程:tutorialspoint-servlet

    来自turorialspoint的Servlet基础教程(英文),官网:https://www.tutorialspoint.com/servlets/index.htm 这个教程在国内已经被翻译成中 ...

随机推荐

  1. 《Android深度探索HAL与驱动开发》第二章阅读心得

    按照书中所讲的步骤,第一步先准备好搭建Android开发环境所需要的工具:JDK6或以上版本:Eclipse3.4或以上版本:ADT:CDT:Android SDK:Android NDK;交叉编译环 ...

  2. CentOS 一键搭建pptpd

    rpm -Uvh http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm yum -y insta ...

  3. ubuntu kylin 16.04系统的基本安装

    系统版本:ubuntu kylin 16.04 硬件状况:500G HDD+120G SSD 已安装操作系统:WIN 10专业版(craked) ——WIN 10系统是装在SSD的第一个盘符内的.以前 ...

  4. JSON.parse() 和 JSON.stringify()

    JSON.parse()和JSON.stringify()   1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf& ...

  5. CMAKE 配置选项

    CMake Configuration Options 注: 本文翻译自 dcmtk_wiki: Howto_CMakeConfiguration. DCMTK版本(原文):dcmtk-3.6.0 C ...

  6. iscsi与multipath

    2016-10-01/21:07:24 http://www.cnblogs.com/wuchanming/p/4019660.htmlhttp://czmmiao.iteye.com/blog/20 ...

  7. myeclipse激活时cracker2015.jar打不开

    myeclipse激活时cracker2015.jar打不开 可能是jdk版本的问题 这是我用的myeclipse版本 myeclipse-2016-ci-7-offline-installer-wi ...

  8. tengine+tomcat配置

    # 根据你服务器的cpu核数来确定此值 worker_processes 4; error_log logs/error.log crit; #error_log logs/error.log not ...

  9. elasticsearch【cat API,系统数据】指令汇总

    本博文讲述的ES获取系统数据的API是基于Elasticsearch 2.4.1版本的. 0. overview a. 下面将要介绍的所有的指令,都支持一个查询参数v(verbose),用来显示详细的 ...

  10. Use setInterval instead of setTimeout

    Use setInterval instead of setTimeout check out codes: http://jsfiddle.net/GustvandeWal/295jqqqb/