错误原因及分析###
按照计划学习servlet但是只研究了知识,但是很少动手写代码,一年没动编程和学习相关的东西,快要忘记了之前已经养成的方法论了,这从侧面说明,>动手!动手!!一定要动手!!!MJ
这是写的一个测试servlet cookies 和session的小程序,我发现我在目录结构和路径访问以及配置上一直在转圈,这些外围的东西让我搞了将近两个小时,陆续我会将笔记整理出来,这里先放一点,主要是这个错误。由于我servlet比较渣,可能出现这种问题会有一些其他的原因呢,但是在我这里原因是这样的。
主要问题出现在web.xml文件中,
如果你要访问的servlet在项目中有包(package),这里顺便把至少是我开始不太熟悉的路径的问题讲一下*在tomcat中你的web
application 即你建的项目在 webapps目录下,假设你的项目名字为 123 于是在webapp下有一个文件加123 里面有一个
web.xml文件和一个WEB-INF文件夹 ,WEB-INF 文件夹中有一个class文件夹 ,class文件夹中放置你的编译好的servlet,这样
你就可以访问localhost:端口号/123/你要访问的servlet ,还有一种情况就是大型的项目不会这样弄的,会见很多的包,包里面
含有servlet。这时候你的包也要建到class文件夹中,访问的时候要这样访问localhost:端口号/123/一层一层的包/你要访问的
servlet* **就在这个时候问题出现了!!!** 你在web.xml中一定要这样写:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<!--以上的xml可以暂时过滤掉-->
<servlet>
<servlet-name>你要访问的servlet</servlet-name>
<!--这个地方,一定要把包名大全!!!-->
<servlet-class>包名.你要访问的servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>你要访问的servlet</servlet-name>
<url-pattern>/包名/你要访问的servlet</url-pattern>
</servlet-mapping>
</web-app>
webapps的目录结构形象的表示是这样的:
- webapps
- yourWebApplicationName
- WEB-INF
* class
*包servlet/裸servlet - web.xml
- WEB-INF
- yourWebApplicationName