3. 简化
其他操作不太好简化,这也很好理解~、
而5和6则需要点击package去打包,还有拷贝部署到对应目录,太麻烦了
不简化的话,每次调整代码,都要重新打包,重新拷贝部署替换原来的那个war包
我们只需要通过IDEA的插件(plugin)来完成这个工作(一键式完成5和6)
插件就是扩展,满足不同项目的不同要求的,需要就下载即可,各取所需,而不是,每个用户统一
就是这个,下载即可:
使用Smart Tomcat插件
首次使用比较麻烦,需要配置:
点击右上角的add…
右上角什么都没有,需要把这个栏打开:
点击add new
填写信息
之前context path拷贝到webapps中后不需要手动改,现在使用Smart Tomcat则需要~
修改后:
Context path就是/项目名
Servlet path就是/注解名
确认后:
点击这个三角形,启动程序:
首先,在IDEA这个控制台(utf8编码)中不会出现乱码,所以就可以看懂了,我们以后也是在这里观看的~
其次,这个Tomcat似乎没有启动成功:
看到这个错误信息:
原因:
Tomcat启动,需要绑定两个端口:
8080(业务端口)
8005(管理端口)
一个端口号只能被一个进程,而我们刚才的小黑框,就已经占用了这两个端口了,所以才会出现这个错误!
只需要关闭小黑框~
重新启动:
下面那个地址就是提示你的路径是什么
localhost == 127.0.0.1
点了一定404
因为这个路径没有第二级目录:/hello(注解里的字符串)
通过浏览器发送GET请求:
IDEA命令行中看到的:
Smart Tomcat的运行方式和之前拷贝到webapps是存在区别的~
清空webapps中的东西
把target删了
(ctrl + f2 结束进程),然后重新启动程序~
重新生成了target,但是里面似乎并没有war包~
webapps中也没有部署东西
而是通过这个特定的路径,“告诉”Tomcat,通过这个特定的参数,在这个特定路径里加载webapp就行了
所以并不涉及打包和拷贝~
开发和调试阶段,这种方式就相当方便,但是要部署到生产环境,还是得打war包和拷贝部署(但是通过开发和调试,这个包就很成熟了~)
4. Servlet程序中常见的问题
4.1 404
请求的路径写错
war包没被正确加载
比如web.xml中没写、写错或者漏写:
如果没有正确加载,服务器日志是有提示的~
这样浏览器访问后:
4.2 405
刚才web.xml的注释要取消掉哦~
发的请求的方法和代码不匹配
代码写得是doPost方法,但是发的却是GET请求
重新启动程序,发送请求:
忘记干掉super
重新启动程序,发送请求:
命令行正常,但是浏览器异常~
4.3 500
意味着你的服务器抛异常了,跟我们平时一样,查看异常调用栈去解决bug
重新启动程序,发送请求:
通过这个信息,快速定位错误位置!
4.4 返回空白页面
就是resp的body没有被设置
重新启动程序,发送请求:
4.5 无法访问此网站
Tomcat没打开(IDEA中程序没运行)
关闭程序,然后发送请求:
或者是:
通过这些错误去调试bug,也是一项重要的技能!