认识Servlet---2

文章介绍了使用SmartTomcat插件简化Servlet项目的部署过程,避免繁琐的打包和拷贝步骤。同时,分析了Servlet程序中常见的404、405和500错误的原因,并提供了相应的解决思路。此外,讲解了HttpServlet类的重要方法,如init、destroy和service,以及如何处理编码问题以防止乱码。
摘要由CSDN通过智能技术生成

在这里插入图片描述

hi,大家好,今天我们继续来认识Servlet

1.更方便的部署方式

2.访问出错的问题分析

3.Servlet的API之HttpServlet

🍨🍨🍨🍨

🍭1.更方便的部署方式
在上一期的讲解中,我们已经完整的创建项目并且编写代码并且得到了验证,那么七个步骤是否可以简化一下呢?
当然可以,我们能简化的地方就是打包代码和部署
那么我们就要借助插件plugin来完成这个工作
什么是插件呢?
插件就是为了实现小众功能而生的,可以视为是对某个软件原有功能的扩充

🧊1.我们需要在IDEA应用商店下载Smart Tomcat插件
在这里插入图片描述
在settings的marketplace搜索框搜索tomact,下载我这个图里面的Smart Tomcat,
使用Smart Tomcat可以简化打包部署工作
🧊2.使用Smart Tomact
首次使用要稍微麻烦一点,需要配置一下
在这里插入图片描述
同时这里自定义的名字就是Content Path,
如果我们的程序是拷贝war到webapps目录运行,Content Path就是war包的名字
如果使用Smart Tomcat,Content Path就是在上述配置自定义的名字,如果不配置,默认是项目名字
然后运行
在这里插入图片描述
点击这个三角就行
看运行结果
在这里插入图片描述
这个蓝色的点开就会报错
在这里插入图片描述
为哈呢?
因为URL不匹配啊!
少了一个Servlet Path
在这里插入图片描述

加上就对了
smart tomcat和上一个我们讲的将war包拷贝到wabapps里面运行存在本质区别

1.smart tomcat一般用于开发和调试阶段

2.将war包拷贝到wabapps里面运行一般是部署到生产环境时会用的

3.smart tomcat使用了Tomcat的另外一种运行方式,在运行Tomcat的时候,通过特定的参数,来指定Tomcat加载某个特定目录的webapp,下图可以体现这句话
在这里插入图片描述
所以这个过程没有打包也没有拷贝

=======================================================================

🍭2.访问出错的问题分析
我们来分析一下Servlet程序的常见问题
1.我们的老朋友了~~
404 表示浏览器访问的资源在服务器上不存在
原因

1.请求的路径写错了
2.路径写对了,war包没有加载正确 比如web.xml写错了,就会导致war包不能被正确加载 比如两个Servlet的Servlet Path一样,那么也会导致不能被正确加载 当出现错误,服务器日志有提示,可以根据那个看到错误显示
这里注意为什么说web.xml写错,就会导致war包不能被正确加载呢?

解答:war是一种 Java Web 应用程序包的标准格式,它包含了应用程序所有的资源文件、Java 类和配置文件等,并可以被部署在 Servlet 容器中。web.xml也是web程序的一个重要配置文件,如果 Web.xml 文件存在错误,会导致应用程序未能正确加载初始化,无法正常工作,从而无法提供应用程序的功能。此时,如果将有问题的 war 包部署在 Servlet 容器中,可能会导致 Servlet 容器出现异常,并提示加载 Web 应用程序失败

405

1.发的请求的方法和代码不一样 写的代码是doPost,发的是get请求,一定报错
2.没出现第一个问题,但是super.doGet忘记注释了

500:服务器抛异常了,就是代码的bug,进行调试即可

🍭3.Servlet的API之HttpServlet
Servlet API有很多,我们重点掌握三个类

1.HttpServlet类
2.HttpServletRequest
3.HttpServletResponse

今天我们先来介绍第一个

HttpServlet类
在这里插入图片描述

写Servlet程序就要继承这个类
我们要知道这个类里面哪些方法可以被重写,都是干啥的

方法名称调用时机
initHttpServlet 实例化之后被调用一次
destory在 HttpServlet 实例不再使用的时候调用一次
service收到 HTTP 请求的时候调用
doGet收到 GET 请求的时候调用(由 service 方法调用)
doPost收到 POST 请求的时候调用(由 service 方法调用)
doPut/doDelete/doOptions/…收到其他请求的时候调用(由 service 方法调用)

1.init方法
可以看到它的调用时间是在HttpServlet实例化之后被调用一次,什么时候HttpServlet被实例化呢?首次收到匹配的请求的时候,会调用到这个方法执行一次,来使用这个方法进行一些初始化的相关操作
在这里插入图片描述
这个请求会触发HelloServlet类的doGet方法的执行,那么就会在调用doGet方法之前先调用init方法一次

在这里插入图片描述
注意,只执行一次!!!
2.destroy方法
这个方法是该webapp被卸载(被销毁之前)执行一次,用来做一些收尾工作.,不过destroy方法能否执行,这个具有不确定性
1.如果是按照8005管理端口停止服务器,那么destroy就能执行
2.如果采用暴力的方法直接杀死进程停止服务器,那么derstroy不能执行
Tomcat在启动的时候会占用两个端口,8080和8005
8080是业务端口
8005是管理端口,负责重新加载配置,重新启动,调整设置项等
3.service方法
每次收到路径匹配的请求的时候都会执行
不会重写service,都是重写doXXX
Servlet的生命周期
1.init在初始情况下调用一次
destroy是结束之前调用一次
service是每次收到路径匹配的请求都调用一次

doXXX的方法我们采用postman 来让大家看
在这里插入图片描述
doPost
在这里插入图片描述
doPut
在这里插入图片描述

doDelete
在这里插入图片描述

🥗🧀最后强调一个问题
当浏览器出现乱码的情况,说明是乱码了.
数据返回的时候采用的编码方式是utf8
浏览器展示的时候,根据系统默认编码方式gbk来解析
这俩方式不一样,就会产生乱码问题
现在utf8更加主流,因此我们就在代码中添加这样一段代码

在这里插入图片描述

这段代码就是告诉浏览器返回的数据是utf8格式的,那么浏览器就会按照utf8的格式去解析

今天的讲解就到这里,我们下期再见咯,拜拜~~~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值