昨晚复习JSP相关知识,遇到一些小问题,我也是醉了。。。
1.加入外部tomcat时,对应的jre home应该是java->jdk的路径(jre所在jdk的路径),而不是java->jre
2.出现404错误很久很久。。。发现当在一个web工程上右键new->jsp时,默认会把jsp放在webRoot根路径下(与直接在webRoot下new jsp等价),而浏览器直接通过http://localhost:8080/webDemo/xxx.jsp即可访问,无需通过http://localhost:8080/webDemo/webRoot/xxx.jsp来访问;受相关书籍影响,如果把JSP挪到webRoot外面,与webRoot同级位置,表面上是位于web工程的跟路径下,符合http://localhost:8080/webDemo/xxx.jsp
的访问习惯,但是无论如何都会出现404错误。。。困扰很久(tomcat->work->catalina->localhost下根本没有相应的编译出来的类jsp)。
3.出现端口8080占用:cmd窗口,netstat ->ano | findstr "8080" 查看哪个PID占用了tomcat的8080端口? tasklist查看哪个进程名对应占用端口的PID,kill掉即可,再重启tomcat;
4加入外部tomcat时,必须选上enabled,才会在server窗口出现你所加入的tomcat。。。
5.servelt注解技术:(如servlet 3.x)Servlet3是Java EE6规范的一部分,必须升级到支持此规范的IDE工具和tomcat jdk版本。。。。。
6.tomcat放在eclipse中启动,控制台没有报错,但是在地址栏输入loclahsot:8080却看不到tomcat主页。——解决办法:双击server下的tomcat服务器,在server locations选择中间项:use tomcat installation.
并且控制台还出现如下警告:
StandardServer.await: Invalid command '' received
——解决办法:查看tomcat所使用的jdk版本跟配置的环境变量里jdk的版本是否一致,不一致则改成环境变量里jdk的安装版本,重启成功出现欢迎界面
7.部署项目到tomcat可以通过修改tomcat的conf/server.xml文件。在<Host></Host>下添加以下东西:
<Context path="/demo" docBase="E:\mywork\项目名称\WebRoot" reloadable="true" />
8.搭建spring环境时,需要把一些常用的common包全部导入,否则会启动tomcat失败!
否则会报错:Java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
注意:并不是打日志才需要这些common-logging包(还有其他common包),spring启动也是需要这些common包的。
9.tomcat启动成功,输入localhost:8080有欢迎界面,但输入localhost:8080/项目名 无法出现欢迎页面,404:
1)首先排查项目名有没有写错
2)没写错再确定tomcat的设置页面(打开方式见情况6)里Server Locations->Deploy path是不是tomcat下的webapps路径(默认不是,是wtswebapps),不是的话修改。修改完之后即可成功访问项目主页面。
10.tomcat的另一种“高级”部署方法(更新于2016/12/5)
搞开发也快3年了。。竟然到现在才发现这种高端的项目部署方式。。
1)首先,在eclipse里面双击tomcat,打开界面;
2)需注意Ports部分可以修改tomcat的一些端口,比如HTTP/1.1可以修改访问端口,而Server Locations一定要选择中间那一项~
2)打开Open launch configuration,切换至source选项卡,点击Add按钮:
可打开Add source界面,然后选择“Java Project”选项,选择相应的项目:
点击“ok”。
3)切换至“Modules”标签页,选择Add External Web Module,选择相应的项目并设置Path,这里的Path将是访问页面时的上下文,再保存界面设置,其中Document base要设置到项目的WEB-INF/classes所在的父目录,这里是WebContent;Auto reloading enabled不勾选:
注:这里的Path默认 是和项目同名的,但是如果你设置了项目的 Web Project Settings里面的Context root,则这里的Path将会显示你设置的Context root(也就是你再输入项目访问路径时的上下文)。但注意,如果你是部署成功以后再修改Context root,然后访问的时候再输入你设置的上下文会报404,意味着对默认Context root的修改必须是在部署之前进行才能成功!
4)之后启动项目即可。在项目比较少的情况下觉得没必要,但是一旦项目多了且需要同时启动,这种做法就比较优雅。
============== 更多的问题亟待发现,所以基础的东西还是很重要的。。。 =============
总结:一般熟悉了框架技术,这种基础的东西再复习会发现诸多问题。虽然不太顺利,但也巩固了jsp编译成类servlet的运行原理,以及tomcat work目录下到底放的是什么。。。。。