今天在学习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. 【学习笔记】oracle 比较运算符,逻辑运算符,特殊运算符,判断空值,大小写敏感

    比较运算符:> 大于,< 小于 >= 大于等于,<= 小于等于 = 等于,!=,<>,^= 不等于 逻辑运算符运算的优先顺序:NOT > AND > O ...

  2. linux常用工具集合

    网络: nm-tool 查看网络状态(有线/无线)

  3. EXTJS4.2中neptune主题的使用

    原文地址:http://blog.csdn.net/xieguojun2013/article/details/8880519 最近在在sencha.com官网了解到EXTJS的最新版本里增加了新的主 ...

  4. mysql数据库性能篇

    慢查询:超过设定时间的SQL语句会被记录到指定文件内 1.观察mysql慢查询默认的时间(默认10秒) show variables like 'long%'; 2.修改慢查询设定时间 set lon ...

  5. 使用sublime遇到的问题汇总

    问题一:用GBK编码的文件用Sublime打开出现中文乱码的解决办法: 通过ctrl+shift+p--package control install安装插件"ConvertToUTF8&q ...

  6. System.DateUtils 2. IsInLeapYear 判断是否是闰年

    编译版本:Delphi XE7 function IsInLeapYear(const AValue: TDateTime): Boolean; implementation // 判断是否是闰年 f ...

  7. Linux 基础笔记

    1    vim /etc/inittab     linux配置文件,这个文件负责设置init初始化程序初始化脚本在哪里;2    passwd    修改密码2.1    passwd xxx   ...

  8. Qt开发中的实用笔记一--xml,Qpainter,Delegate:

    因为开发环境不能联网,开发中用到有用的知识就记在word稳定中,不知不觉就记载了几十页,为避免笔记丢失,现在就一点点忘博客上搬,方便日后回顾! ---------------------------- ...

  9. CentOS7关闭防火墙方法

    在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables stop 在RHEL7中,其实没有这个服务 [root@rhel7 ~]# ...

  10. MYCAT介绍(转)

    从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个M ...