毕竟是为了学习Servlet,所以上一篇新建了一个javaWeb应用,现在开始写我的第一个Servlet.
1.引入jar包
参考《JSP&Servlet学习笔记》第二章,编写HelloServlet,先不管三七二十一,直接按照书上内容把HelloServlet完全Copy下来。如下所示:
很明显一堆类找不到,说明servlet相关的类不是在jdk里面,百度一下,发现确实得下载额外的jar包,然后我从网上下了servlet-api.jar,这个时候要把jar包引入到项目里面。
如上图将servlet-api.jar放在WEB-INF下面的lib目录(没有lib目录自己新建一个)里;然后打开project Structure,将lib目录添加至Dependencies中。结果得到下图:
还是有类找不到,继续百度(我觉得我在给百度打广告),annotation所在的jar包版本过低,重新在网上下载了个servlet-api-3.0.jar,重新引入项目中,这次没有报错了。
2.启动项目
启动没有报错,很开心,那么开始访问hello.view了,结果如下:
我一脸懵逼,再次重启后,看启动日志确实没有报错。
难道是我访问路径不对? 为了排查这个是不是访问路径错误导致的问题,我在web.xml中加入servlet相关配置信息,如下:
重新启动,访问hello.view ,结果如下:
这说明访问路径没有问题,只是原来并没有找到指定的Servlet,那么也就是说,注解@WebServlet("/hello.view")没有生效。百度了一下发现,@WebServlet是servlet3.0新加的特性,而该项目里面web.xml的版本是2.5,支持的是servlet2.5,所以WebServlet也就没有生效(为什么idea不给个编译错误提示呢?)。接下来就简单了,把web.xml的版本改成3.0,如下:
重新启动,报错了。。。这就很尴尬了:
百度了上诉错误,得到的结论是weblogic10.3.4并不支持web-app_3_0.xsd的定义,weblogic10.3.x是servlet2.5的容器。
好吧,要么升级weblogic版本,要么下个tomcat7.0以上的版本。我图省事,就下载了个tomcat7,然后把项目部署上去。
成功了!!!
遗留问题:
1.weblogic和tomcat不同版本对servlet版本的支持
2.web.xml的配置分别都代表着什么意思