按照要求把class文件弄到:tomcat->webapps->工程目录->WEB-INF->classes下,但是在浏览器中无限的404和500报错,折腾了一上午,把整个examples的WEB-INF都拷贝过来排错,唉····
为了防止出错,一定要:
1、web.xml直接从webapps里的ROOT文件拷贝过来,其他servlet部署自己写,class名也最好copy
2、JavaProject新建的类就不要放包里了,开始以为不会出错,最后无限错误代码500,应该就是这里,如果写包里,web.xml的servlet-class就得改改了,class文件不知道是不是也得放在classes文件夹里的新建文件夹,麻烦(下文已解决放在包里老出错的问题 :-D)
步骤:
1、在tomcat->webapps新建工程目录,例如名为test
2、在test下新建文件夹,名为WEB-INF,把webapps->ROOT下的web.xml拷贝到新的WEB-INF。
配置web.xml(servlet和servlet-mapping)
例如:
<servlet>
<servlet-name>hw</servlet-name>
<servlet-class>hw</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hw</servlet-name>
<url-pattern>/hw</url-pattern>
</servlet-mapping>
3、在WEB-INF下新建文件夹,名为classes
4、新写一个继承HttpServlet的类,把.class文件(例如名为hw.class)放到classes文件夹下(Eclipse在保存.java时自动编译生成.class文件)
5、启动tomcat
6、访问:http://localhost:8080/test/hw
如果.java源文件在包里,例如 package com.study;
1、在web.xml里改为<servlet-class>com.study.hw</servlet-class>
其他不变
1.1、把.class文件还是直接放在classes文件夹,报错500
2、把包含com的整个文件夹拷贝到classes文件夹里。
2.1、可能错误的考过去的是包含.java的包文件夹,没有.class文件。.class文件是在java工程目录的bin目录下,不要弄错成了src。否则报错404,根本找不到文件了
综上终于解决了。看来昨天做第一个Servlet,折腾一上午的404和500:
一是没有注意到自己的.java源文件是写在包里的。
二是把.class文件复制到classes文件夹时,没有复制整个包的文件夹。
三是文件夹复制错了,复制了src目录里的包文件夹,正确的是bin目录里的文件夹
:-D
另外今天用到jsp的内建exception类,在自己写的ErrorPage.jsp里面,发现又开始无限报错500
原因是直接在eclipse中的浏览器运行,应该就是IE,会在ErrorPage.jsp页面很短的时候,用自己的500界面代替我们写的ErrorPage.jsp
用Chrome测试,一切正常