今天在学习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. jquery 中的 offset()

    一.语法: 1.返回偏移坐标 $(select).offset(); top:  $(select).offset().top; left:  $(select).offset().left; 2.设 ...

  2. 【python】Redis介绍及简单使用

    一.redis redis是一个key-value存储系统.和 Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合).zset(s ...

  3. AT指令(转)

    资料来自网络 附录AT指令简编一. 一般命令1.AT+CGMI 给出模块厂商的标识.2.AT+CGMM 获得模块标识.这个命令用来得到支持的频带(GSM 900,DCS 1800 或PCS 1900) ...

  4. Linux任务计划

    Linux任务计划: 一次性任务执行(at.batch): at:定时任务,指定一个时间执行一个任务,只能执行一次. at使用方式: 交互式:让用户在at>提示符输入多个要执行的命令: 批处理: ...

  5. 使用OpenLDAP构建基础账号系统

    LDAP - Lightweight Directory Access Protocol,对该协议的具体应用,常见的是微软的Active Directory服务和Linux上的OpenLDAP组件. ...

  6. linux下的代码比较工具

    在linux下有很多不错的代码比较工具:meld.DiffMerge.xxdiff.diffuse.Kompare等... diff : 文件比较工具用于比较计算机上的文件的内容,找到他们之间相同与不 ...

  7. GridView 行单击或双击事件绑定

    protected void gvTeacherTaskList_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.Comma ...

  8. html引入css文件

    在HTML中,引入CSS的方法主要有行内式.内嵌式.导入式和链接式. 行内式:即在标记的style属性中设定CSS样式,这种方式本质上没有体现出CSS的优势,因此不推荐使用.例: <html&g ...

  9. Beta版本冲刺——day7

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 站立式会议 今日计划表 人员 工作 ...

  10. Linux 随机生成随机数

    #!/bin/bash echo $(($RANDOM % 39)) 表示生成0-39的随机数 并且不为0和39