博主近来学习JSP,在eclipse中创建servlet调试时出现问题,于是,不停地百度,不停地创建项目,然后删了再建,建了再删,搞得头都大了,最后发现问题出在一个小地方。在这里,博主很想吐槽一下网上的一些解决方法的贴子,不知道是转载还是怎么滴,几乎是千篇一律,都说的差不多,这样也就罢了,问题是还写的不详细,具体怎么做也没说清楚。所以,一方面博主想把自己解决问题的方法记录下来,以便后面查阅,另一方面,把遇到的问题跟解决方法和大家分享,希望大家少走弯路。问题的解决是一个过程,说遇事不要急躁纯属扯淡,如果遇到个问题,搞大半天搞不出来,谁能不急?急躁在所难免,但莫要轻易放弃,当你经过重重困难,最后把问题解决的时候,那种欣喜乐趣只有你自己能明白。
下面说正题,博主是在eclipse中配置tomcat,创建Dynamic Web Project,怎么配置tomcat,怎么创建项目,相信大家都没问题,博主只把其中要注意的一些地方写下来,当然,解决问题的方法可能不唯一。
注意:
博主已经改变了部署目录,可参考点击打开链接。
给出博主的项目结构:
1 当博主创建完servlet文件,配置好web.xml文件后,运行的时候发现报错500,按道理servlet会被编译成class文件,但我在workspace的项目目录下没有找到。
注意:
如果此时报错500并且没有结束运行中的程序,再去点运行时,会报错404,建议每次运行完,关掉程序。
解决:
在eclipse的菜单栏点击Project,选中Build Automatically,选中后会有打勾。
2 之后在workspace的项目目录下找到了编译好的class文件,但是出现在项目/build/classes中,博主的目录是C:\Users\lenovo\workspace\TomcatTest\build\classes\com\test\TestServlet.class,而在tomcat安装目录下却没有找到编译好的class文件。
解决:
在eclipse中,右键点击创建的项目,Properties——Java Build Path——Source,将Default output folder的路径TomcatTest/build/classes,改为TomcatTest/WebContent/WEB-INF/classes,点击OK。
这样就可以在tomcat安装目录下找到编译好的class文件,博主的目录是E:\apache-tomcat-9.0.0.M22\webapps\Tomcat\WEB-INF\classes\com\test\TestServlet.class。
3 再次运行,还是报错500,程序抛出异常ClassNotFoundException。
注意:
如果再次运行,出现下图问题:
删掉刚刚在tomcat安装目录下生成的class文件,即可启动tomcat服务。
博主的问题是出在web.xml文件的配置上,
<servlet>
<!-- 类名 -->
<servlet-name>TestServlet</servlet-name>
<!-- 所在的包 -->
<servlet-class>com.test.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet</servlet-name>
<!-- 访问的网址 -->
<url-pattern>/TestServlet</url-pattern>
</servlet-mapping>
解决:
博主最后发现是<url-pattern>/TestServlet</url-pattern>这一行的问题,这一行是配置浏览器中访问servlet的地址,
一种方法是改为:/testServlet
用小写开头。
另一种方法是改为:/TomcatTest/TestServlet
/项目名/servlet文件的类名
当然,/TomcatTest/testServlet这样也可以。
博主改了web.xml文件后就可以正常运行了!